1:公司要通过socket的方式请求服务器拿数据,recv返回回来后要判断数据是否完整,是否在完成一条后还有下一条数据,从没有写过沾包,想求助具体写法,返回数据的形式是 长度 code 内容。这个接收的方法单独起一个现成while 循环来跑 不停地跑
光阴似箭催人老,日月如移越少年。
Adakah data mempunyai protokol yang ditentukan sendiri?
Sila rujuk sendiri tulisan soket;
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
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.
Anda boleh merujuk kepada Twisted Int32StringReceiver
Adakah data mempunyai protokol yang ditentukan sendiri?
Sila rujuk sendiri tulisan soket;
Berikan beberapa idea:
Paket TCP mesti melekat pada rakan setara yang sama tidak diproses di sini Anda perlu melakukan pemprosesan yang sama untuk setiap rakan setara
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.
Anda boleh merujuk kepada Twisted
Int32StringReceiver