2016-04-18 7 views
-1

私はPC(C#で書かれています)、PC(Javaで書かれたもの)に1台、アンドロイド電話で1台(PCクライアントと同じコード) PCクライアントからサーバーにメッセージを送信すると、1つのreceive()で1つのメッセージが受信されます。しかし、私はアンドロイドクライアントからサーバーにメッセージを送信すると、単一のreceive()が複数のメッセージを持つことになります。ソケットプログラミング:1回の呼び出しで完全なメッセージを受信

私はTCPを使用していますが、ストリームベースのプロトコルだと私は知っています。しかし、なぜPCクライアントが一度に1つのメッセージを送信するのか。 Androidクライアントでも、どうすれば実現できますか?

+0

'receive()'はJavaのUDPメソッドです。あなたは 'read()'を意味しますか? – EJP

+0

実際に私のサーバはJavaでC#とクライアントになっています。だから、私はちょうど私の言葉としてsend()とreceived()を使いましたが、プロトコルはTCPです。 –

答えて

0

メッセージ全体を1通のread()コールで確実に受信できるようにするには、何もできません。 TCPにメッセージというものはありません。これはバイトストリームプロトコルです。メッセージが必要な場合は、アプリケーションプロトコルを使用してメッセージを実装する必要があります。

+0

メッセージの長さもメッセージとともに送信します。私のPCクライアントは正常に動作し、 'サイズ'の指示に従って完全なメッセージを受信します。しかし、アンドロイドクライアントにはまだ問題があります。それは必要以上のデータを読み込みます。 –

関連する問題