这是我对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中运行。
最佳答案
当您试图连接的端口上没有任何服务在监听时,通常会发生ConnectionRefused异常。
可能存在以下问题:
服务器未运行。
服务器不等待接受连接。
您可能连接了错误的端口号。您需要确保服务器和客户端使用相同的端口号。
您可能在服务器启动之前就启动了客户端。
您使用的代码很好。当然,只有上述问题或某些网络问题。也可能有防火墙阻止连接。
有时,您较早的客户端实例可能会使端口保持打开状态。因此,您可能需要再次使用其他端口。
您可以尝试从客户端ping服务器计算机。
如果先在本地主机上的同一台计算机上检查服务器和客户端,那会更好。