这是我对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服务器计算机。

如果先在本地主机上的同一台计算机上检查服务器和客户端,那会更好。

10-08 13:56