另外,补充一下:
所有的server-side socket第一句都是调用eapo.Utils.ReadLine读信息。

解决方案 »

  1.   

    我想你应该在客户端调用
    java.net.Socket.setSoLinger(true, delaytime)
    否则客户端socket Close后,所有没发出去的数据都被扔掉
      

  2.   

    客户端与服务器端都要检查
    服务器端(可能原因):
                 服务器端最好用多线程来处理连接请求,根据您的描述,我猜服务器端处理有可能也有问题.客户端:  
        Software caused connection abort: recv failed,客户端的原因会大点,您仔细检查下
    (个人建议,仅供参考)
      

  3.   

    楼主最好能把两个Socket的程序传上来!
      

  4.   

    这个问题其实很明显
    是你的服务器端没有用循环来接受客户端的请求
    给你段代码看看
    public void startService() {

    try {
    server=new ServerSocket(this.port);
    System.out.println("Server Start Successfully\n");

    while(true) {
    Socket client=server.accept();
    System.out.println("Accept Client Query\n");

    DataInputStream in=new DataInputStream(client.getInputStream());
    DataOutputStream out=new DataOutputStream(client.getOutputStream());
    // Thread.sleep(1500);
    StringBuffer sb=new StringBuffer(new Date().toString());
    sb.append(" ");
    sb.append(in.readUTF());
    // in.close();
    System.out.println("Read data from client successfully\n");

    out.writeUTF(sb.toString());
    // out.flush();
    // out.close();
    System.out.println("Write data to client successfully\n");  
    }

    } catch (Exception e) {
    System.out.println(e.toString());
    System.out.println("Server work failed\n");
    stopService();
    }
    }
      

  5.   

    问题解决了,是服务器短多线程同时读取一个socket,逻辑设计错误,赫赫,不好意思。
    谢谢各位帮助!007remember(绿原) 兄弟,给你11分,祝你升级愉快:P