클라이언트 - 서버 프로그램이 있습니다.TcpClient에서 데이터를 올바르게 수신하지 못했습니다.
나는이 같은 데이터를 전송하고 있습니다 :
private void Sender(string s,TcpClient sock)
{
try
{
byte[] buffer = Encoding.UTF8.GetBytes(s);
sock.Client.Send(buffer);
}catch{}
}
및 클라이언트 측에서
은 다음과 같이 수신 :byte[] buffer = new byte[PacketSize];
int size = client.Client.Receive(buffer);
String request = Encoding.UTF8.GetString(buffer, 0, size);
문제는 데이터가 완벽하게 때로는 유일한 부분입니다, 항상 수신되지이다 내가 보낸 것의 PacketSize
은 내가 보내는 바이트보다 많은 10240입니다. 나는 또한 양쪽에 SendBufferSize와 ReceiveBufferSize를 설정했다.
최악의 경우 데이터가 완전히 수신되는 것입니다.
무슨 문제 일 수 있습니까?
+1. TCP 클라이언트/스트림에서 시간 초과를 사용하는 것을 잊어 버리십시오. 그렇지 않으면 데이터를 전송하는 응용 프로그램이 네트워크 문제를 가지고 있거나 응용 프로그램에 네트워크 문제가있는 경우 응용 프로그램이 중단됩니다. – stefan
@stefan : 대신에 Async 메소드를 사용하는 것이 더 낫다. 하지만 기본 원리를 먼저 익히자. – Jon
@Jon Async yes를 사용하는 것이 더 나을 수 있지만 실제로는 응용 프로그램에 달려있다. – stefan