好的,帮我看看
 class sender{
  private Socket sendSocket = null;
  private String receiveName ;
  private PrintWriter messageSender = null;
  private int port = 0;
  int builtTimes = 0;
  boolean isBuiltOk = true;
  //--------------------------
  int builtSocket(){
    try{
      sendSocket = new Socket(receiveName,port);
      //System.out.println("send at:"+receiveName+" at port:"+port);
      return 2;
      }catch(UnknownHostException e){
          System.out.println("Unknown host"+receiveName+":"+e);
          return 0;
          }catch(IOException e){
              port++;
              System.out.println("rebuilt at port"+port);
              return 1;
                  }
  }
  //--------------------------
  void sendMessage(String message){
      messageSender.println(message);
  }
  //--------------------------
  public sender(String receiveName , int p){
    this.port = p;
    this.receiveName = receiveName;
    int toBuiltClient = this.builtSocket();
    while(toBuiltClient != 2){
      builtTimes++;
      toBuiltClient = this.builtSocket();
      if (toBuiltClient == 0) break;
      if(this.builtTimes>2) {this.isBuiltOk=false;return;}
      }
      try{
        //System.out.println("trying");
        messageSender = new PrintWriter(sendSocket.getOutputStream(),true);
       }catch(UnknownHostException e){
          System.out.println("Unknown host"+receiveName+":"+e);
          }catch(IOException e){
              System.out.println("Failed I/O to "+receiveName+":"+e);
               }
    }
  }
//
sendTest.sendMessage("r u ok");
sendTest.messageSender.flush();
sendTest.sendMessage("r u ok ag");
sendTest.messageSender.flush();

解决方案 »

  1.   

    能收到r u ok
    却收不到:r u ok ag
    !!!????????????
      

  2.   

    不用sendTest.messageSender.flush();这句了;
    检查一下是不是服务器那端关了,服务器要用一个循环不断read
      

  3.   

    不可能
    看看吧
     public void run(){
             String nowMessage = "";
                   while(runing){
                      try {
                      clientSock = severSock.accept();
                     // System.out.println("accept...........");
                      messageReceiver = new BufferedReader(new InputStreamReader(clientSock.getInputStream()));
                      nowMessage = messageReceiver.readLine();
                      jEditorPane1.setText(jEditorPane1.getText()+"\n"+nowMessage);
                      //-----
                      if (nowMessage.equals("NO")){
                          JOptionPane.showMessageDialog(null,"玩家"+joinGame.nPlayer.playersAdress+"不想于你联机","亏!",JOptionPane.INFORMATION_MESSAGE);
                          }
                     //-----------
                      else if (nowMessage.equals("YES")){
                          JOptionPane.showMessageDialog(null,"玩家"+joinGame.nPlayer.playersAdress+"同意于你联机","OK!",JOptionPane.INFORMATION_MESSAGE);
                          joinGame.nowTurn = nowTurn;
                          joinGame.start();
                          System.out.println("joinGame start");
                        }
                     //-----------
                      else if (nowMessage.substring(0,5).equals("hello")){
                        int i = JOptionPane.showConfirmDialog(null,"玩家"+nowMessage.substring(6)+"想与你联机,允许吗?","提示!",JOptionPane.INFORMATION_MESSAGE);
                            sendToJoin = new sender(nowMessage.substring(6),receiverport);
                            if (sendToJoin.isBuiltOk){
                              System.out.println("sendToJoin built ok:"+sendToJoin.receiveName);
                               if (i==0){
                                  sendToJoin.sendMessage("YES");
                                  hostGame.nPlayer.playersAdress = nowMessage.substring(6);
                                  hostGame.nowTurn = nowTurn;
                                  hostGame.start();
                                  System.out.println(nowMessage.substring(6));
                                  System.out.println("hostGame start");
                                  }else  sendToJoin.sendMessage("NO");
                    //        System.out.println("hostGame still waiting");
                                }
                              }
                        //----------
                       else if (nowMessage.substring(0,7).equals("message")){
                        jEditorPane1.setText(jEditorPane1.getText()+"\n"+":"+nowMessage.substring(8));
                        }
                      //-------------
                      else if (nowMessage.substring(0,8).equals("Position")){
                        StringTokenizer NM = new StringTokenizer(nowMessage,"+");
                        NM.nextToken();
                        String whoTurn = NM.nextToken();
                        System.out.println("receive turn ="+whoTurn);
                        if (whoTurn.equals("joinGame")){
                          if (joinGame.runing){
                            joinGame.nPlayer.xPosition = Integer.parseInt(NM.nextToken());
                            joinGame.nPlayer.yPosition = Integer.parseInt(NM.nextToken());
                            nowTurn = 2;//joinGame.nowTurn;
                            }
                          }
                        else  if (whoTurn.equals("hostGame")){
                          if (hostGame.runing){
                            hostGame.nPlayer.xPosition = Integer.parseInt(NM.nextToken());
                            hostGame.nPlayer.yPosition = Integer.parseInt(NM.nextToken());
                            nowTurn = 1;//hostGame.nowTurn;
                            }
                          }
                       }
                      //receivedMessage = nowMessage;
                      clientSock.close();
                      }catch(IOException e){
                      System.err.println("wrong"+e);
                      }
                     try {
                      this.sleep(500);
                      }
                    catch(Exception e){
                          System.out.println("wrong"+e);
                                      }
                      }
        }