JAVA:java.net.BindException:已在使用的地址:JVM_Bind

时间:2017-07-26 17:48:32

标签: java sockets tcp

我已经写了这两个类,一个用于客户端,另一个用于服务器。当我运行它们时,我收到以下错误:

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);
        }
    }
}

1 个答案:

答案 0 :(得分:-1)

  

有什么问题?我也使用TCPview软件,只有两个java.exe使用相同的端口。这两个java.exe进程属于这些应用程序。

这是你的问题。

您尝试在计算机的同一端口绑定2个套接字,并且无法在同一台计算机上的同一端口绑定2个套接字。

这可能是因为您有一个正在侦听端口1254的现有进程(可能是您的服务器应用程序的一个实例),并且您尝试运行您的服务器应用程序,该应用程序也尝试在1254端口进行绑定