2010-02-11 6 views
2

TCP를 통해 매우 오래된 시스템에 데이터를 보내고 있습니다. 한 패킷에 2000 바이트를 전송해야하며 분할하지 않아야합니다 (소켓을 통해 2000 바이트를 쓸 때 어떻게됩니까?).C#에서 TCP 패킷 만들기

그래, 난 응용 프로그램 수준에서 이것에 대해 신경 쓰지 않아도된다. 나는 구형 시스템에 다른 옵션이 없기 때문에 실제로 이것을 신경 써야한다. 모든 것이 하나의 패킷으로 수신되어야한다. .

netcat을 호출하는 것보다 끔찍한 것이 있습니까? 당신이 ethernetjumbo frames 보통 MTU와 링크를하지 않는 한

+1

이 패킷을 UDP로 보내지 않습니까? TCP는 연결 기반 프로토콜로 두 컴퓨터간에 연결을 설정하며 데이터 전송은 스트림으로 처리해야합니다. TCP를 통해 단일 패킷을 보내려고한다는 것은 모순입니다. –

+0

네, 그 정도는 이해합니다 - TCP를 통해 단일 패킷을 보내는 것은 모순되지 않습니다 - 수신기는 시간이 지남에 따라 이들의 스트림을 수신 할 것이지만 전송 된 패킷으로 데이터의 단편화를 제어하기를 원합니다 (수신단에 오래된 스택이 있음). –

+0

* tcp segmentation * 및 * ip fragmentation *을 혼란스럽게합니다. TCP는 후자를 피하기 위해 전자를 최적화하기 위해 매우 열심히 노력합니다. –

답변

4

는 1500 빼기 IP (20 바이트) 및 TCP 헤더 (최소 20 바이트)입니다. 그래서 한 패킷에 2000 바이트의 운이 없어요.