TCP ソケットを使用して XML 形式のメッセージをサーバーに送信しています。サーバーは完全なメッセージで応答します (WireShark で確認しました) が、自分の側で完了するのに問題があります。1 バイトより大きいバッファを使用すると、応答のメッセージの最後にバッファの残りのサイズがありません。1 バイトのバッファを使用すると、99% のケースで機能します。私が使用している と関係があると思いますが、StringBuilder
すでにアイデアがありません。と も試しましたが、うまくNetworkStream
いきStreamSocket
ませんでした。任意のヘルプまたは応答をいただければ幸いです。
public string StartClient(string message, string ip, int port) {
byte[] bytes = new byte[1];
int bytesRec = 0;
StringBuilder reply = new StringBuilder();
try {
IPAddress ipAddress = IPAddress.Parse(ip);
IPEndPoint remoteEP = new IPEndPoint(ipAddress, port);
Socket sender = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
sender.Connect(remoteEP);
byte[] msg = Encoding.ASCII.GetBytes(message);
sender.Send(msg);
do
{
bytesRec = sender.Receive(bytes);
if (bytesRec == 0)
{
sender.Shutdown(SocketShutdown.Both);
sender.Close();
break;
}
else
{
reply.Append(Encoding.ASCII.GetString(bytes, 0, bytesRec));
}
} while (sender.Available > 0);
}
catch (Exception e)
{
return e.ToString();
}
return reply.ToString(); ;
}