首页 热点资讯 义务教育 高等教育 出国留学 考研考公

Python 网络编程

发布网友 发布时间:2022-04-22 00:59

我来回答

1个回答

热心网友 时间:2022-05-10 11:00

你用到了recv(buffer_size),那么你用的是TCP协议;tcp协议不同与udp,udp是一次发送,接收到就收到,没收到就会丢弃,也就是掉包.tcp是分段发送的,没记错的话size是在16-4380之间,超过部分会再发,直到服务端收完,如果服务端只手一次的话,也就是说没循环来接收,客户端就会在下一次send前删掉缓存区的数据.

看下下面的代码,改成你的环境下看看打印出来的东西就知道了:

while True:
    print "waiting of the client to connect"
    clt_conn_sock, addr = sock_svr.accept()
    print 'Connected by', addr
    comp_data = ''    # 完整数据
    while True:
        data = clt_conn_sock.recv(SIZE)
        print data    # 这里第一次打印时就是只接收一次的情况
        if not data:
            break
        comp_data += data
    clt_conn_sock.close()
    if not comp_data:
        continue
    print comp_data

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com