2016-07-30 3 views
0

私はServerSocketをJavaで書いています。私はtelnetを通して私に接続するクライアントにいくつかの特別なコンテンツを送りたいと思う。ユーザーがブラウザなどで接続する場合、他のコンテンツを送信したいと考えています。ユーザーがtelnetで私に接続していることを確認する方法はありますか?クライアントがtelnet経由で私のサーバに接続していることを知るには?

マイコード:

public void handleConnection(Socket socket) throws IOException { 
    String author = "Ehsan Akbari"; 
    BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream())); 
    PrintWriter out = new PrintWriter(socket.getOutputStream(),true); 
    if(checkoutClientType(socket)=="telnet") 
     out.println("You are connecting through telnet :\)"); 
    else 
     out.println("You are not connecting through telnet :|"); 
} 

checkoutClientType(Socket s);の定義がどうあるべきか?

答えて

0

ソケット自体を調べることで、ソケットの反対側にあるプログラムを知ることはできません。クライアントプログラムを区別するソケットで実行できるテストや操作はありません。

唯一の希望は、送信されるデータを調べて期待されるパターンと一致するかどうかを確認することですが、そのためにはデータを送信する必要があります。 AYT(Are You There)のようなTelnetプロトコルコマンドを送信する場合はリモートがtelnetであるかどうかを知ることが可能ですが、ブラウザなどの別のクライアントにはうまくいきません。

クライアントと処理プロセスまたはスレッドの間でデータをプロキシして調べることができれば、それが最終的にTelnetであったかどうかを判断できる可能性があります。

+0

ありがとう、私はいくつかのHTTP/1.1ヘッダをチェックしてブラウザがクライアントであることを確認できますか?そうでなければ、彼/彼女はtelnetで接続していますか? –

関連する問題