我是JAVA的Socket编程初学者,
昨天遇到一个问题搞了一天都没有解决,
这个程序在别人的电脑上用都可以通过,只有在我的电脑上无法通过
,我一开始装的是JDK6.0,后来卸载了装成了JDK5.0(为了和所学教程保持一致,
以及我宿舍通过测试的机器也是装的JDK5.0),
但是依然通不过,郁闷中,希望各位高手帮忙解决。
程序代码如下:
----服务器端
import java.io.IOException;
import java.net.*;
public class TCPServer {
 public static void main(String[] args) throws Exception{
ServerSocket server = new ServerSocket(97); //binding listening
Socket s = server.accept(); //blocking
System.out.println("a client connect!");
 }
}
----客户端
import java.net.*;
 
public class TCPClient {
 public static void main (String args[]) throws Exception {
Socket s = new Socket("127.0.0.1",97);
 }
}运行结果如下:(由于无法粘图,手动敲了)
D:\java\ten>java TCPserver
Exception in thread "main" java.net.BindException:Cannot assign reguested 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 java.net.ServerSocket.<init><ServerSocket.java:97>
  at TCPServer.main(TCPServer.java:7)

解决方案 »

  1.   

    这个程序在别人的电脑上用都可以通过,只有在我的电脑上无法通过Are you sure?
      

  2.   

    换了,还是不行。我用系统已经占了的端口不应该是提示already assign之类的错误吗。我这个好像是根本没法和指定的端口号产生联系是的。是不是防火墙要设置什么?
      

  3.   

    Server 和Client端的端口一致
      

  4.   

    你用:netstat -ano | find ":97"命令,看一下是否有程序将这个端口占用了。
      

  5.   

    我运行了LZ的程序 ,也是可以的哦!LZ还是换另外一个端口(server和client的端口号一致),并用netstat -a| find ":port"检测端口是否已用
      

  6.   

    没有冲撞系统,虚拟机倒是重新装了两次。呵呵,不过下午关掉瑞星防火墙以后就能运行了。也搞不懂为什么关掉windows的防火墙无用,必须要管瑞星的,而且 把瑞星防火墙里面的选项全部去掉开启也不行,必须保持关闭状态。