私は現在サーバー/クライアントで作業しており、基本はほぼ完了しています。しかし、私はテストクライアントプログラムを閉じて開いた後にデータを送信することに問題があります。クライアントは切断前にすべてのデータを送信していません
これは私の切断方法がどのように見えるかです:
public void Disconnect()
{
if (m_clientSocket != null)
{
m_clientSocket.Shutdown(SocketShutdown.Receive);
}
}
とテストデータは次のようになります。
Client cl = new Client(888, "127.0.0.1");
cl.Connect(null);
cl.DataArrived += MyListenerMethod;
cl.Disconnect();
cl.Connect("hello");
cl.SendData("hello2");
今の問題は、それが時には「hello」を送ると「hello2」になるでクライアントプログラムを閉じて繰り返し起動すると、ちょうど "こんにちは"と表示されることがあります。 私はこれが設計通りに動作していると確信していますが、プログラムが終了する前にすべてのデータを送信したいのですが、これを達成するために遅延や何かを使わなければならないと思います。私はこれが些細な質問のように思えるかもしれないが、これが可能かどうかは疑問だ。
だから問題は、私はNetworkStreamのではなく、古き良き文字列を使用しているということですリレーメッセージ? – Siemsen
@Siemsen問題は、ソケットがフラッシュされていないということです。私の推測では 'm_clientSocket'は' Socket'のインスタンスですが、ドキュメンテーションのソケットをフラッシュする方法に関する情報は見つかりませんでした。 – Justin