这是我对java TCP / IP的第一个方法,我试图弄清楚它是如何工作的。我已经为计算机PC1中的服务器和PC2中的客户端jar制作了jar,两者都连接到路由器。我正在尝试使用wlan接口执行步骤here。如果我在PC1中这样做
ifconfig wlan0
我得到了
wlan0 Link encap:Ethernet HWaddr XX:XX:XX:XX:XX:XX
inet addr:192.168.0.101 Bcast:192.168.0.255 Mask:255.255.255.0
inet6 addr: fe80::213:2ff:fed0:abc8/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:3735 errors:0 dropped:0 overruns:0 frame:0
TX packets:3597 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:2769175 (2.7 MB) TX bytes:613767 (613.7 KB)
好吧,如果我使用参数64作为端口号运行服务器代码,我会得到这个
Port: 64
Nov 10, 2014 3:07:13 AM comunicacion.JavaTCPServer main
SEVERE: null
java.net.BindException: Permission denied
at java.net.PlainSocketImpl.socketBind(Native Method)
at java.net.AbstractPlainSocketImpl.bind(AbstractPlainSocketImpl.java:382)
at java.net.ServerSocket.bind(ServerSocket.java:375)
at java.net.ServerSocket.<init>(ServerSocket.java:237)
at java.net.ServerSocket.<init>(ServerSocket.java:128)
at comunicacion.JavaTCPServer.main(JavaTCPServer.java:74)
我做错了什么?我怎样才能解决这个问题?我必须先在PC1中创建一个网络吗?所有代码都在Ubuntu中运行。
答案 0 :(得分:1)
在基于Unix的系统中,1024以下的端口特权。您需要管理员 权限才能访问1024以下的端口。
因此使用端口64会产生异常。
您应该使用大于1024的端口号。
您可以在此处获得有关使用1024以下端口的一些信息:
http://manpages.ubuntu.com/manpages/hardy/man1/authbind.1.html
答案 1 :(得分:0)
当您尝试连接的端口上有没有服务侦听时,通常会发生 ConnectionRefused 异常。
可能存在以下问题:
您使用的代码很好。肯定只有上述问题或某些网络问题。也可能有防火墙阻止连接。 有时您早期的客户端实例可能会打开端口。所以你可能需要再次使用不同的端口。
您可以尝试从您的客户端 ping服务器计算机。
如果您首先在 localhost 上检查同一台计算机上的服务器和客户端,那会更好。