2017-07-26 72 views
1

我写了这两个类,一个用于客户端,另一个用于服务器。当我运行它们两个时,出现以下错误: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); 
     } 
    } 
} 
+0

可能也绑定您的服务器应用程序原因可能是有两台服务器正在运行。如果需要,使用tcpview本身并关闭两个java.exe实例。然后重试,首先运行服务器,然后再运行客户端。 “ – Dota2

回答

-1

What is the problem? Also I use TCPview software and there were just two java.exe that use the same port. These two java.exe processes belong to the apps.

这是你的问题。

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

这可能是因为你有一个现有的过程,是在端口1254(也许您的服务器应用程序的实例)听,而你试图运行它试图在端口1254

+0

”您不能在同一台计算机的同一端口绑定2个套接字。“其实你可以,只要他们都绑定到不同的IP地址,并且这些都不是0.0.0.0。 – EJP

+0

我认为你的权利..当我只运行服务器代码(无需运行客户端代码),我看到两个java.exe运行在同一端口...我能做些什么?当我杀死这些文件之一wth TCPview两个java.exe都被杀死了......我该怎么办? –

+0

这个代码有没有更正? –

相关问题