服务器程序:
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”但在它正常工作之前。有人能帮我解决这个问题吗?
如果您要多次重新启动程序的服务器端,TIME_WAIT中可能会有套接字,阻止您再次监听端口8080。
您需要按如下方式设置启用重用选项(套接字选项SO_REUSEADDR):
ServerSocket ss = new ServerSocket();
ss.setReuseAddress(true);
ss.bind(new InetSockAddress(8080));
我试图在Ubuntu 12.04中运行以下命令 并得到以下错误 在检查8080端口时,输出是 我的问题 为什么我会犯错误,以及如何消除这个错误?
问题内容: 以下代码运行了1个小时,然后关闭: 当我重新运行同一件事时,它失败了: 大约需要3至4分钟才能再次成功执行。关闭后如何使它立即工作? 跟进: 问题答案: 您会看到setReuseAddress(true)的调用为时已晚,即在绑定引发异常之后。 您可以通过三个步骤创建一个未绑定的ServerSocket,使其可重用,然后将其绑定。
问题内容: 在Eclipse中,出现此错误: 我不知道为什么现在出现,但几个小时前就可以运行了。我需要重启机器吗?我如何深入了解它?我感谢任何提示或建议。 问题答案: 是的,你有另一个绑定到同一端口的进程。 每当我遇到JVM_BIND错误时,Windows Sysinternals的TCPView(仅Windows)都是我最喜欢的应用程序。它显示了哪些进程正在侦听哪个端口。它还提供了一个方便的上下
问题内容: 失败:生成失败,发生异常。 出了什么问题:任务’:project-web:jettyRun’的执行失败。 java.util.concurrent.ExecutionException:java.net.BindException:使用中的地址错误:JVM_Bind 尝试:使用–stacktrace选项运行以获取堆栈跟踪。使用–info或–debug选项运行以获取更多日志输出。 建立失
问题内容: 我在Windows XP Pro上使用Glassfish 3.0.1,JVM 1.6.0_21; 我不知道我的环境到底发生了什么变化,但是当我尝试部署企业应用程序(ejb模块+应用程序客户端模块)时,我立即获得了该堆栈跟踪信息。 除Glassfish之外,端口3820上没有任何运行。 这可能是什么原因?一些内部过程冲突? 关于如何进一步调试的任何提示? 编辑 这正是我尝试过的: 如您所
问题内容: 有时,每当我重新启动基于Java Struts Mysql和Jboss 4.05版本构建的应用程序时,都会收到以下错误消息: 地址已在使用中:JVM_Bind 我知道的唯一解决方法是重新启动计算机,然后重试,它将起作用。否则,有时我执行Ctrl-Alt-Del并停止所有与Java相关的过程,有时这也可行。 但是,确切的原因是什么,我们如何预防这个问题呢? 问题答案: 已使用的地址:JV