服务器程序:
import java.io.*;
import java.net.*;
class Server{
public static void main(String args[]){
try{
ServerSocket ss = new ServerSocket(8080);
Socket s = ss.accept();
DataInputStream dis = new DataInputStream(s.getInputStream());
String str = (String)dis.readUTF();
System.out.println("Message : "+str);
ss.close();
}catch(Exception e){
System.out.println(e);
}
}
}
客户计划:
import java.io.*;
import java.net.*;
class client{
public static void main(String args[]){
try{
Socket s = new Socket("localhost",8080);
DataOutputStream dos = new DataOutputStream(s.getOutputStream());
dos.writeUTF("Hello friend ");
dos.flush();
dos.close();
s.close();
}catch(Exception e){
e.printStackTrace();
}
}
}
执行此程序时。我得到了这样的错误" java.net.BindException:地址已在使用中:JVM_Bind"但在它工作正常之前。请有人帮我解决这个问题吗?
答案 0 :(得分:1)
如果您多次重新启动程序的服务器端,可能会有TIME_WAIT中的套接字,这会阻止您再次侦听端口8080.
您需要设置启用重用选项(套接字选项SO_REUSEADDR),如下所示:
ServerSocket ss = new ServerSocket();
ss.setReuseAddress(true);
ss.bind(new InetSockAddress(8080));