Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/386.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JAVA:JAVA.net.BindException:地址已在使用中:JVM\u Bind_Java_Sockets_Tcp - Fatal编程技术网

JAVA:JAVA.net.BindException:地址已在使用中:JVM\u Bind

JAVA:JAVA.net.BindException:地址已在使用中:JVM\u Bind,java,sockets,tcp,Java,Sockets,Tcp,我已经编写了这两个类,一个用于客户端,另一个用于服务器。当我同时运行这两个程序时,会出现以下错误: java.net.BindException: Address already in use: JVM_Bind... 有什么问题?我还使用TCPview软件,只有两个java.exe使用相同的端口。这两个java.exe进程属于应用程序 代码如下: 服务器代码 /** * * @author casinoroyal */ public class server { public sta

我已经编写了这两个类,一个用于客户端,另一个用于服务器。当我同时运行这两个程序时,会出现以下错误:

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
使用相同的端口。这两个java.exe进程属于应用程序

这是你的问题

您试图在计算机的同一端口绑定2个套接字,但无法在同一计算机的同一端口绑定2个套接字


这可能是因为您有一个现有进程正在端口1254(可能是您的服务器应用程序的一个实例)上侦听,并且您尝试运行您的服务器应用程序,该应用程序也尝试在端口1254绑定。可能的原因可能是有两台服务器正在运行。如果需要,请使用tcpview本身并关闭两个java.exe实例。然后先运行服务器,然后运行客户端重试。“你不能在同一台计算机上的同一端口绑定两个套接字。”实际上你可以,只要它们都绑定到不同的IP地址,并且没有一个是0.0.0.0。我想你是对的..当我只运行服务器代码时(不运行客户端代码)我看到两个java.exe运行在同一个端口上…我能为它做些什么?当我用TCPview杀死其中一个文件时,两个java.exe都被杀死了…我能做些什么?这段代码有任何更正吗?@EJP抱歉,我不清楚。您可以执行两次
新建套接字(addressToConnect,aPort)。将尝试在同一端口连接,但它们的本地端口将不同,因此这两个端口将不使用同一端口。我想说的是,你不能做两次
newserversocket(1254)
将抛出一个
java.net.BindException
,因为您试图让两个套接字侦听同一台计算机上的同一端口。@M.shahbazi我运行了一个服务器实例和一个客户端实例,但没有得到任何
java.net.BindException
。这两个客户端进程在服务器上连接时没有出现问题。您只需确保在计算机上已经有一台服务器在运行时,您不会试图让另一台服务器运行。