用java socket 写了一个服务器端,在内网运行是可以的,但放到外网就报端口占用,求指导
2013-10-10 09:33
246 查看
错误:
java.net.BindException: Cannot assign requested address: JVM_Bind
at java.net.PlainSocketImpl.socketBind(Native Method)
at java.net.PlainSocketImpl.bind(PlainSocketImpl.java:359)
at java.net.ServerSocket.bind(ServerSocket.java:319)
at java.net.ServerSocket.<init>(ServerSocket.java:185)
at cn.SocketTester.main(SocketTester.java:15)
代码:
import java.io.BufferedInputStream;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.OutputStreamWriter;
import java.net.InetAddress;
import java.net.ServerSocket;
import java.net.Socket;
public class SocketTester {
public static void main(String[] args){
try {
ServerSocket serverSocket = new ServerSocket(9003,3,InetAddress.getByName("61.148.200.226")); //61.148.200.226
System.out.println("创建服务器套接字成功");
while (true){
System.out.println("等待客户端连接");
Socket socket=serverSocket.accept();
System.out.println("与客户端成功");
socket.setSoTimeout(30000);
System.out.println("开始输出数据");
BufferedInputStream in = new BufferedInputStream(socket.getInputStream());
byte[] b = new byte[1024];
int i = in.read(b);
String str = new String(b, 0, i);
System.out.println("RECEIVE MESSAGE:"+str);
BufferedWriter out = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream()));
out.write(str);
out.flush();
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
java.net.BindException: Cannot assign requested address: JVM_Bind
at java.net.PlainSocketImpl.socketBind(Native Method)
at java.net.PlainSocketImpl.bind(PlainSocketImpl.java:359)
at java.net.ServerSocket.bind(ServerSocket.java:319)
at java.net.ServerSocket.<init>(ServerSocket.java:185)
at cn.SocketTester.main(SocketTester.java:15)
代码:
import java.io.BufferedInputStream;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.OutputStreamWriter;
import java.net.InetAddress;
import java.net.ServerSocket;
import java.net.Socket;
public class SocketTester {
public static void main(String[] args){
try {
ServerSocket serverSocket = new ServerSocket(9003,3,InetAddress.getByName("61.148.200.226")); //61.148.200.226
System.out.println("创建服务器套接字成功");
while (true){
System.out.println("等待客户端连接");
Socket socket=serverSocket.accept();
System.out.println("与客户端成功");
socket.setSoTimeout(30000);
System.out.println("开始输出数据");
BufferedInputStream in = new BufferedInputStream(socket.getInputStream());
byte[] b = new byte[1024];
int i = in.read(b);
String str = new String(b, 0, i);
System.out.println("RECEIVE MESSAGE:"+str);
BufferedWriter out = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream()));
out.write(str);
out.flush();
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
相关文章推荐
- ubuntu显示端口占用、正在运行的程序,以及强制关闭一个进程
- VMware NAT端口映射 外网可以访问内网虚拟机
- VMware NAT端口映射 外网可以访问内网虚拟机
- Seafile内外网同时访问的实现(端口映射:将外网的一个端口映射到内网80端口)
- 在内网建一个FTP服务器,并且可以通过外网访问
- VMware NAT端口映射 外网可以访问内网虚拟机
- VMware NAT端口映射 外网可以访问内网虚拟机
- 在服务器上部署项目后新增一个访问端口,服务器本地可以访问项目,但是外网访问不了
- ubuntu,显示端口占用,显示正在运行的程序,以及强制关闭一个进程
- 利用运行时,给UIImageView写一个分类,交换里面的setImage的方法,可以重绘图片,提高内存的利用率(要是没有重绘图片,直接使用系统提供的setImag就会造成占用大量的内存问题)
- 在内网建一个FTP服务器,并且可以通过外网访问
- ubuntu,显示端口占用,显示正在运行的程序,以及强制关闭一个进程
- js代码跟html如上,单独放在一个页面运行测试就可以,可当放到实际项目中只滚动2次就停了。原因
- 在内网建一个FTP服务器,并且可以通过外网访问
- 动态IP或无公网IP时外网访问内网固定端口管家婆等应用
- CreateMutex创建互斥体可以用于只运行进程的一个实例
- js replace 全局替换 以表单的方式提交参数 判断是否为ie浏览器 将jquery.qqFace.js表情转换成微信的字符码 手机端省市区联动 新字体引用本地运行可以获得,放到服务器上报404 C#提取html中的汉字 MVC几种找不到资源的解决方式 使用Windows服务定时去执行一个方法的三种方式
- 80端口一直被占用,导致resin或者tomcat运行不了