tcp の長い接続を下請けする方法は何通りありますか?

coldplay.xixi
リリース: 2020-06-28 13:20:26
オリジナル
3313 人が閲覧しました

tcp ロングコネクションのパケット化には、1. メッセージ長を固定する方法、2. 特殊な文字列をメッセージ境界として使用する方法、3. 長さフィールドを追加する方法、4. の 4 つの方法があります。メッセージ自体のフォーマットを使用して再委託する方法。

tcp の長い接続を下請けする方法は何通りありますか?

TCP ロング接続パケット化の 4 つの方法:
1. 固定メッセージ長
2. メッセージとして特殊な文字列を使用する境界線。たとえば、http プロトコルのヘッダーでは、フィールド区切り文字 3 として "\r\n"
が使用されます。各メッセージのヘッダーに長さフィールドを追加します。これは最も一般的な
4. メッセージ自体の形式を使用してサブパッケージ化します。たとえば、XML 内の <root></root> のペアリングなど。

関連する学習の推奨事項: PHP 初心者からマスターまでプログラミング

パケット化のためにヘッダーにメッセージ長フィールドを追加する方法について説明します
各メッセージのヘッダーが 4 バイトである場合、文字列長を格納します。たとえば、メッセージ「hello」の場合、バイト ストリームは 0x00,0x00,0x00,0x05,'h ',' e','l','l','o'
下請けを示す疑似コードを作成します:

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 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート