tcp发现消息

新手上路,请多包涵

这是服务端代码~~~~

#! /usr/bin/python3

import socket

# 创建流式套接字
sk = socket.socket(family=socket.AF_INET,type=socket.SOCK_STREAM,proto=0)

# 设置端口立即重用
sk.setsockopt(socket.SOL_SOCKET,socket.SO_REUSEADDR,1)

# 绑定IP地址
sk.bind(('127.0.0.1',7676))

# 设置监听套接字,创建监听队列
sk.listen(6)

# 等待客户端连接
connsk,addr = sk.accept()

# 收发消息
while True:
    with open('ceshi_server.txt','w') as f:
        data = connsk.recv(1024)
        print('收到来自%s客户端的消息:%s'%(addr,data.decode()))
        if data == '':
            break
        f.write(data.decode())
        connsk.send('已经将收到内容写到文件'.encode())
connsk.close()
sk.close()

这是客户端代码

#! /usr/bin/python3

import socket

# 创建流式套接字
sk = socket.socket(family=socket.AF_INET,type=socket.SOCK_STREAM,proto=0)

# 发起连接请求
sk.connect(('127.0.0.1',7676))

# 收发消息
with open('ceshi.txt','r') as f:
    for l in f:
        # if l == '':
        #     break
        sk.send(l.encode())
        data = sk.recv(1024)
        print('从服务器收到的消息:',data.decode())

sk.close()

我的目的是通过tcp给服务器发送一个文件,发送的方式是循坏读取文件的内容发送,但是文件内容就四行,客户端发送完了正常断开,但是服务器老是多接收了两条空的信息,导致一个BrokenPipeError错误
server.jpgclient.jpg

阅读 926
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题