>일반적인 문제 >TCP 긴 연결 하도급에는 몇 가지 방법이 있습니까?

TCP 긴 연결 하도급에는 몇 가지 방법이 있습니까?

coldplay.xixi
coldplay.xixi원래의
2020-06-28 13:20:263342검색

tcp 긴 연결 패킷화에는 4가지 방법이 있습니다. 1. 메시지 길이를 고정하는 방법 2. 특수 문자열을 메시지 경계로 사용하는 방법 3. 각 헤더에 길이 필드를 추가합니다. 메시지 방식 4. 메시지 자체의 형식을 이용하여 하도급하는 방법.

TCP 긴 연결 하도급에는 몇 가지 방법이 있습니까?

TCP 긴 연결 패킷화의 네 가지 방법:
1. 고정 메시지 길이
2. 특수 문자열을 메시지 경계로 사용합니다. 예를 들어, http 프로토콜의 헤더는 "rn"을 필드 구분자로 사용합니다. “rn”为字段的分隔符
3.在每条消息的头部加一个长度字段。这是最常见的
4.利用消息本身的格式来分包。比如xml中的4216313e5055da45c6d0ded129c5d644c02ae4fdd442eb2210bebb17feeb95b43. 각 메시지의 헤더에 길이 필드를 추가합니다. 가장 일반적인

4. 하도급 시 메시지 자체의 형식을 사용합니다. 예를 들어 xml에서 4216313e5055da45c6d0ded129c5d644c02ae4fdd442eb2210bebb17feeb95b4의 페어링 등

관련 학습 권장 사항: PHP 프로그래밍 초보부터 능숙까지


패킷화를 위해 헤더에 메시지 길이 필드를 추가하는 방법에 대해 이야기해 봅시다. 0x00,0x00,0x00,0x05,‘h’,'e','l','l','o' 각 메시지에는 문자열 길이를 저장하는 4바이트 헤더가 있다고 가정합니다. 예를 들어 "hello" 메시지, 바이트 스트림은

입니다. 하위 패키징을 표시하는 의사 코드를 작성하세요. 🎜
void OnMessage()
{    while(接收缓冲buf可读字节>=头部长度4)
    {
        len = 包的长度        if(len>65536 or len<0)
        {
            关闭连接
        }        else if(buf>=len+4)
        {
            从buf中提取出4字节;
            message=将buf后的len长度内存赋给message
            messagecallback(message)调用用户代码处理message
            从buf中移除len长度
        }        else
        {
            不够一个包的长度,等待下次消息到来,break;
        }
    }
}

위 내용은 TCP 긴 연결 하도급에는 몇 가지 방법이 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.