我现在写一个java分布式的程序。程序功能是:多个客户端连接一台服务器。然后当其中一个客户端有一个计算请求发送给服务器,服务器将这个计算任务分解成多个子任务,发给所有的客户端一起计算。所有客户端计算完以后,将任务重新发回服务器。服务器整理这些结果,然后返回给初始的那台客户端。
这个系统建立的是TCP连接。
现在遇到一个问题。
当客户端发送了计算请求给服务器以后,服务器分解计算任务然后发给多个客户端。每个客户端都计算完并将结果返回给服务器。但是,只有第一个返回结果的客户端的信息服务器能收到,第二个就一直停在bufferedreader的readline这行。
请问这该怎么解决

解决方案 »

  1.   

    不好意思,还是有个问题。
    当多个客户端同时大量的发送数据包,而且同一台客户端有几十个线程同时发送数据包给服务器。大概这时候网络传输量是1MB/S...那么服务器就会发生接受的包个数不对的问题。请问该如何解决。我之前的解决方案是将客户端发送数据包的方法改为单线程执行,不用多线程。这样就避免了大量包的发送,但是又降低了程序运行的效率。
      

  2.   

        编程过程中发现一个问题,请各位大虾帮忙看一下!
        我最近编写了一个JAVA APPLET小程序,建立一个SCOKET连接,想得到本地的IP和端口号,但是结果总是得到127.0.0.1这个地址,很困惑!
        try{
          String host = "192.168.1.232";
          Socket sock1 = new Socket(host,6666);
          String localhost = sock1.getLocalAddress().toString();
          String localport = sock1.getLocalPort.toString();
    }catch(){}
        
        用网页打开,运行以上代码得到的localhost总是127.0.0.1,不解,怎么能得到本地有用的IP地址呢?
        请各位帮忙,不胜感激!
        另外,从服务器端返回的客户端(即本地)IP地址是正确的,端口号要比localprot少一。这种情况在有些电脑是这样,有些电脑上不是这样,就是有些电脑返回是正常的有用的IP地址。