cari

Rumah  >  Soal Jawab  >  teks badan

粘包 - python socket 沾包求助

1:公司要通过socket的方式请求服务器拿数据,recv返回回来后要判断数据是否完整,是否在完成一条后还有下一条数据,从没有写过沾包,想求助具体写法,返回数据的形式是 长度 code 内容。这个接收的方法单独起一个现成while 循环来跑 不停地跑

大家讲道理大家讲道理2893 hari yang lalu512

membalas semua(5)saya akan balas

  • ringa_lee

    ringa_lee2017-04-17 17:57:50

    Adakah data mempunyai protokol yang ditentukan sendiri?

    balas
    0
  • 阿神

    阿神2017-04-17 17:57:50

    Sila rujuk sendiri tulisan soket;

    balas
    0
  • 伊谢尔伦

    伊谢尔伦2017-04-17 17:57:50

    Berikan beberapa idea:

    buffer = ''
    while 1:
        data = recv() # 注意处理各种异常,recv有可能返回非str
        if not data:
            continue
        buffer += data
        while buffer:
            pack_len = ... # 取长度 (长度值必然是占固定的位数)
            if len(buffer) < pack_len:
                break
            pack = buffer[:pack_len] # 取包
            handle(pack) # 处理一个包
            buffer = buffer[pack_len:] # 从缓存中删除包

    Paket TCP mesti melekat pada rakan setara yang sama tidak diproses di sini Anda perlu melakukan pemprosesan yang sama untuk setiap rakan setara

    balas
    0
  • 迷茫

    迷茫2017-04-17 17:57:50

    Jika anda menggunakan protokol tersuai, tambahkan medan panjang pada mesej Berdasarkan panjang ini, anda boleh mengetahui panjang mesej ini dan sama ada terdapat sekeping data seterusnya.

    balas
    0
  • PHP中文网

    PHP中文网2017-04-17 17:57:50

    Anda boleh merujuk kepada Twisted
    Int32StringReceiver

    balas
    0
  • Batalbalas