2016-11-23 5 views
0

のクライアント/サーバーチャットをビルドしています。クライアントまたはサーバーのいずれかが「良い買い」メッセージを送信すると接続を終了します。 何は、クライアント側ではまだ生きて"良い買い"メッセージを使ってJavaソケットで接続を終了する方法

接続コードは起きていないこと:

import java.io.*; 
import java.net.*; 

public class TCPClient { 
    public static void main(String[] args) throws Exception { 
     String message; 
     String recivedMessage = "h"; 

     Socket clientSoc = new Socket("127.0.0.1",9999); 

     while(recivedMessage != "good buy") { 
      System.out.print("Client : "); 
      BufferedReader inFromUser = new BufferedReader(new InputStreamReader(System.in)); 
      DataOutputStream outToServer = new DataOutputStream(clientSoc.getOutputStream()); 
      BufferedReader inFromServer = new BufferedReader(new InputStreamReader(clientSoc.getInputStream())); 

      message = inFromUser.readLine(); 
      outToServer.writeBytes(message + '\n'); 

      recivedMessage = inFromServer.readLine(); 
      System.out.println("Server : " + recivedMessage); 
      if (recivedMessage == "good buy") { 
       break; 
      } 
     } 
     if (recivedMessage == "good buy") { 
      System.out.println("Connection end"); 
      clientSoc.close(); 
     } 
    } 
} 

サーバー側のコード:

import java.io.*; 
import java.net.*; 

public class TCPServer { 
    public static void main(String[] args) throws Exception { 
     String Message; 
     String recivedMessage = "h"; 
     ServerSocket welcSoc = new ServerSocket(9999); 

     while(true){ 
      Socket serverSoc = welcSoc.accept(); 
      while(recivedMessage != "good buy"){ 
       BufferedReader inFromClient = new BufferedReader(new InputStreamReader(serverSoc.getInputStream())); 
       DataOutputStream outToClient = new DataOutputStream(serverSoc.getOutputStream()); 
       recivedMessage = inFromClient.readLine(); 
       System.out.println("Client : " + recivedMessage); 

       System.out.print("Server : "); 
       BufferedReader inFromUser = new BufferedReader(new InputStreamReader(System.in)); 
       Message = inFromUser.readLine(); 
       outToClient.writeBytes(Message + '\n'); 
      } 
      if (recivedMessage == "good buy") { 
       break; 
      } 
     } 
     if (recivedMessage == "good buy") { 
      System.out.println("Connection end"); 
      welcSoc.close(); 
     } 
    } 
} 
+0

https://github.com/mirraj2/Jexxus – satnam

+0

のようなソケットライブラリを使用することをお勧めします。ありがとうございます、私は将来それを使用します –

+0

「Good buy」?万が一あなたが「さようなら」を意味するのですか?なぜあなたは何かを送る必要があると思いますか?打ち切り攻撃の検出に興味がある場合を除き、ソケットを閉じるだけで十分です。 – EJP

答えて

0

出力を共有していないので、私は他のすべてが期待どおりに動作していると仮定しています。文字列比較で使用するため :equals

recivedMessage.equals("good buy") 

ジャワ==オペレータには、オブジェクトではなく、値の基準と比較します。 Equalsメソッドはオブジェクト値を比較します。

+0

ありがとう、それは私が役に立たないものです –

関連する問題