私はサーバークライアントアプリケーションを持っています。私は、「ログイン失敗コード」の並べ替えを使って奇妙なスピードバンプを打ちました。Javaソケットが未送信のバイトを取得する
私がしたいことは、ログインの有効性を説明するコードを送信し、必要に応じてOutputStream
を閉じます。 この問題は、クライアントが応答を読み取る前にソケットが閉じられているため、一見してランダムで謎のエラーにつながります。
setSoLinger()
(など)を使用する以外に、書き込まれた最後のバイト(またはそれ以上)がクライアントによって読み取られたことを確認する方法はありますか?
ありがとうございました。
['close()'](http://docs.oracle.com/javase/1.4.2/docs/api/java/net/Socket.html#close())または['shutdownOutput () '](http://docs.oracle.com/javase/1.4.2/docs/api/java/net/Socket.html#shutdownOutput())を使用してストリームを閉じますか? – sarnold
'この問題は、クライアントが応答を読み取る前にソケットが閉じられているように見えます。これは、一見ランダムで潜在的な障害につながります。記述してください。あなたが送信するものは、大規模なネットワーク障害が発生していない限り、そのまま送信されます。 – EJP