TCP 소켓을 통해 큰 문자열이 아닌 일부를 보냅니다. 오늘 나는 2031 바이트를 보내고받는 쪽이 모든 것을 얻지 못했다. (나는 더 큰 메시지를 보낸다. 2040 년 전에) -이 모든 것이 나쁜 것은 아니며, 프로그램은 뭔가 잘못되었다는 것을 알고 데이터를 다시 보낸다. 세 번째 시도는 성공했습니다.) 이제 메시지를 작은 덩어리로 분리하여 루프 문으로 보내야하는지 궁금합니다. 내 코드에 누락 된 것이 있습니까?tcp 소켓을 사용하여 큰 데이터를 보내야합니까?
Socket sock = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
sock.SetSocketOption(System.Net.Sockets.SocketOptionLevel.Socket,SocketOptionName.ReceiveTimeout,0);
sock.SetSocketOption(System.Net.Sockets.SocketOptionLevel.Socket,SocketOptionName.SendTimeout,0);
LingerOption lingerOption = new LingerOption (true, 1);
sock.SetSocketOption(System.Net.Sockets.SocketOptionLevel.Socket,SocketOptionName.Linger, lingerOption);
sock.Blocking = true;
try
{
sock.Connect(_dostHostEp);
}
catch(SocketException e)
{
sock.Close();
throw new Exception("Connection error (" + _dostHostEp.Address + ":" + _dostHostEp.Port + ")" + e.Message);
}
try
{
sock.Send(Encoding.UTF8.GetBytes(message));
}
catch(SocketException e)
{
sock.Close();
throw new Exception("Error while sending message to (" + _dostHostEp.Address + ":" + _dostHostEp.Port + ")" + e.Message);
}
가능한 복제본 [C# Async Sockets Server 수신 문제] (http://stackoverflow.com/questions/5934469/c-sharp-async-sockets-server-receive-problems) – jgauffin
복제본에 "async"가 있지만 문제는 실제로 똑같습니다. 연결된 질문에서 내 대답을 읽으십시오. – jgauffin