TcpClient를 사용하고 있습니다. I에 유래 공헌 정보에 의해 해결하려고NetStream TcpClinet 전송 연결에서 데이터를 읽을 수 없습니다.
Unable to read data from the transport connection: An existing connection was forcibly closed by the remote host. at System.Net.Sockets.NetworkStream.Read(Byte[] buffer, Int32 offset, Int32 size)
: 때때로 오류가 발생합니다. 조건을 추가합니다.
netStream.CanRead
성공했지만 성공하지 못했습니다. 내가 뭘 잘못하고 있니? 여기 코드의 일부입니다. 감사합니다.
try
{
if (netStream.CanRead)
{
do
{
int bytesRead = netStream.Read(bytes, 0, bytes.Length);
bytesReaded += bytesRead;
if (bytesRead > 0)
{
byte[] toList = new byte[bytesRead];
Array.Copy(bytes, toList, bytesRead);
listBytes.AddRange(toList);
}
}
while (netStream.DataAvailable);
if (listBytes.Count > 0)
ParseAllBytes();
}
else
{
Close();
}
}
catch (IOException ex)
{
wireshark를 사용하기 어려울 것이므로이 오류는 정기 간행물이 아닙니다. 이 문제는 연결을 끊은 후에 클라이언트가 TcpClient에 다시 연결할 수 없음을 나타냅니다. 서비스를 다시 시작해야합니다. 이 문제는 오류와 관련이 있습니까? – Musketyr
재사용 소켓을 올바르게 설정하지 않으면 소켓 또는 TcpClient를 다시 만들어야 할 수도 있습니다. 나는 그것을 결코 작동시키지 못했다. 나는 항상 새로운 소켓을 만듭니다. TcpClient에 소켓과 동일한 재사용 아이디어가 있는지 확실하지 않습니다. – uriDium
처리중인 데이터 처리는 TcpClient의 새 인스턴스에있는 새 스레드의 모든 클라이언트에 대한 것입니다. 오류가 발생하면 TcpClient 및 NetStream이 제대로 처리됩니다. – Musketyr