サーバーからクライアントにメッセージを送信したいのですが、いくつかの問題が見つかりました。
out.flush
()によって送信された場合。メソッドの場合、クライアントはそれを読み取ることができますが、- メソッドを使用すると
out.write();
、クライアントは-1
(データを受信していません)のステータスを受け取ります
クライアントがnmbr 2のメソッドでメッセージを受信できるようにするには、何を追加すればよいですか。以下は、クライアント側でサーバーからメッセージを受信するために使用するメソッドです。
int totalBytesRcvd = 0; // Total bytes received
int bytesRcvd; // Bytes received in last read
byte[] byteBufferreceive = new byte[256];
while (totalBytesRcvd < byteBufferreceive.length) {
if ((bytesRcvd = in.read(byteBufferreceive, totalBytesRcvd,
byteBufferreceive.length - totalBytesRcvd)) == -1)
{
Toast.makeText(this, "byte lenght: "+bytesRcvd, Toast.LENGTH_SHORT).show();
Toast.makeText(this, "communication error", Toast.LENGTH_LONG).show();
}
totalBytesRcvd += bytesRcvd;
}
System.out.println("The length of the received data "+totalBytesRcvd);
String receive;
receive = new String(byteBufferreceive);
Toast.makeText(this, receive, Toast.LENGTH_LONG).show();
クライアント側で私はこれを使用します:
DataInputStream in = new DataInputStream(clientsock.getInputStream());
DataOutputStream out = new DataOutputStream(clientsock.getOutputStream());
サーバー側で私はこれを使用します:
in = new BufferedReader(
new InputStreamReader(socket.getInputStream()));
out = new PrintWriter(
new OutputStreamWriter(socket.getOutputStream()));