를 수신 할 때 판독을 중지 I는 원시 데이터 (아닌 문자열) NetworkStream.Read 및 NetworkStream.Write을 사용하여 88 바이트를 전송하는 프로그램을 .는 NetworkStream은 값 10 (개행 문자)와 바이트
바이트 번호 (58)는 값 10 (새로운 라인)를 가지고 발생한다. 수신 프로그램 인스턴스 스트림은 원시 데이터에 대한 읽기 대신 ReadLine처럼이 바이트가 수신되면 읽기를 중지합니다.
시나리오 I 한 번에 32 바이트를 판독하도록 변경된 때, 동일한 바이트에서 정지 한 후 32 26 (총 58)을 읽어 일치한다. 나는 동일한 시스템에서 두 인스턴스를 실행할 때 나는 포트 21을 사용하여 인터넷을 통해 연결된 다른 컴퓨터에있는 두 개의 프로그램 인스턴스를 실행할 때 이것은
은, 전체 88 바이트는 아무런 문제없이 수신됩니다.
나는 30 바이트이 지워지 위치를 확인하기 위해 네트워크 모니터를 사용하지만, 나는 제안 여기 물어 생각 또는 누군가가 비슷한 문제에 직면합니다.
편집 : 여기
코드입니다 : 여기에 코드입니다. 그것은 하나 개의 스트림에서 데이터를 읽고 다른 두 가지 작업에 기록 : `
class ProxyConnection
{
private NetworkStream clientStream;
private NetworkStream serverStream;
public ProxyConnection()
{
.. clientStream = tcpClient.GetStream();
serverStream = tcpServer.GetStream();
..}
private void RouteFromClientToServer()
{
Message message;
while (true)
{
try
{
message = ReadMessageFromClient();
ValidateMessage(message);
SendMessageToServer(message);
}
catch(IOException e)
{
Logger.getInstance().log(e.Message);
break;
}
}
}
private Message ReadMessageFromClient()
{
Message message = new Message();
message.bytes = new byte[MESSAGE_SIZE];
message.bytesCount = clientStream.Read(message.bytes, 0, MESSAGE_SIZE);
Logger.getInstance().log("Size (" + message.bytesCount + ") From Client");
return message;
}
private void SendMessageToServer(Message message)
{
serverStream.Write(message.bytes, 0, message.bytesCount);
Logger.getInstance().log("Size (" + message.bytesCount + ") To Server");
serverStream.Flush();
}
}
데이터를 읽는 데 사용하는 코드를 게시 할 수 있습니까? 당신은 기계들 사이에 어떤 종류의 프록시를 사용하고 있습니까? –
다른 읽으 셨다면 나머지를 읽을 수 있습니까? – cHao
@JeremyMcGee 코드를 추가했습니다. 기계 중 하나가 제 작업장에 있으므로 프록시가있을 수 있습니다. –