我寫了這兩個類,一個用於客戶端,另一個用於服務器。當我運行它們兩個時,出現以下錯誤:JAVA:java.net.BindException:已在使用的地址:JVM_Bind
java.net.BindException: Address already in use: JVM_Bind...
問題是什麼?另外我使用TCPview軟件,並且只有兩個使用相同端口的java.exe
。這兩個java.exe
進程屬於應用程序。
下面是代碼:
服務器代碼
/**
*
* @author casinoroyal
*/
public class server {
public static ServerSocket socket1;
public static void main(String[] args) {
try {
socket1 = new ServerSocket(1254);
String request="";
Socket mylink=socket1.accept();
System.out.println("server feels=====");
DataInputStream input= new DataInputStream(mylink.getInputStream());
DataOutputStream output=new DataOutputStream(mylink.getOutputStream());
Scanner chat=new Scanner(System.in);
while(!request.equals("QUIT")){
request=input.readUTF();
output.writeUTF(chat.next());
}
socket1.close();
} catch (IOException ex) {
System.out.println(ex);
}
}
}
客戶端代碼
package javaapplication9;
import java.net.*;
import java.io.*;
import java.util.*;
public class client {
//main
public static void main(String[] args) {
System.out.println("client want to be connected");
try {
Socket mysock = new Socket(InetAddress.getLocalHost(),1254);
System.out.println("client has been connected");
DataInputStream input = new DataInputStream(mysock.getInputStream());
DataOutputStream output = new DataOutputStream(mysock.getOutputStream());
String reque="";
Scanner scan1=new Scanner(System.in);
String sendmsg=scan1.next();
while(!reque.equals("QUIT")){
output.writeUTF (sendmsg);
reque=input.readUTF();
}
mysock.close();
} catch (IOException ex) {
System.out.println("client rejected"+ex);
}
}
}
可能也綁定您的服務器應用程序原因可能是有兩臺服務器正在運行。如果需要,使用tcpview本身並關閉兩個java.exe實例。然後重試,首先運行服務器,然後再運行客戶端。 「 – Dota2