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

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

最佳答案

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.

这是你的问题。

您尝试在计算机的同一端口绑定(bind) 2 个套接字,但无法在同一台计算机的同一端口绑定(bind) 2 个套接字。

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

关于JAVA:java.net.BindException: 地址已被使用: JVM_Bind,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45334131/

相关文章:

java - 未找到 JDBC/ODBC 数据源名称且未指定默认驱动程序

python - 欺骗 HTTP 请求的源 IP 地址

c++ - 从套接字中的字符缓冲区转换为整数

javascript - Node.js 中的同步 TCP 读取

python - 找到 TypeError : coercing to Unicode: need string or buffer, ZipFile

java - 通过 Ganglia 监控 WebSphere JVM 指标

java - 在带有对象的 arrayList 中查找字符串时出现问题

java - 找到两个数组之间的非公共(public)元素

sockets - UDP打洞可能吗?

android - 移动运营商如何对数据使用进行计费——按字节还是按数据包?