TCP / IP通过WLAN,权限被拒绝

时间:2014-11-10 06:37:15

标签: java sockets tcp-ip

这是我对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中运行。

2 个答案:

答案 0 :(得分:1)

在基于Unix的系统中,1024以下的端口特权。您需要管理员 权限才能访问1024以下的端口。

因此使用端口64会产生异常。

您应该使用大于1024的端口号。

您可以在此处获得有关使用1024以下端口的一些信息:

http://manpages.ubuntu.com/manpages/hardy/man1/authbind.1.html

答案 1 :(得分:0)

当您尝试连接的端口上有没有服务侦听时,通常会发生 ConnectionRefused 异常。

可能存在以下问题:

  1. 服务器未运行。
  2. 服务器不等待接受连接。
  3. 您可能连接错误的端口号。您需要确保服务器和客户端使用相同的端口号。
  4. 您可能在服务器启动之前启动客户端。
  5. 您使用的代码很好。肯定只有上述问题或某些网络问题。也可能有防火墙阻止连接。 有时您早期的客户端实例可能会打开端口。所以你可能需要再次使用不同的端口。

    您可以尝试从您的客户端 ping服务器计算机。

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