python基础—socket套接字(2)

接上回:1.客户端和服务端不可能只发一句消息就完了,因此需要消息循环,用while Ture就可以。

    2.客户端一般会直接关闭,服务端找不到客户端肯定会报错,因此需要捕捉异常。try  except

    3.一个客户端完了,还有下一个客户端进来,因此accept需要循环,组合起来就成了这样。

#服务端
import socket

socket_obj = socket.socket()
socket_obj.bind(('127.0.0.1', 9000))
socket_obj.listen(5)
#链接循环
while True:
    fd, addr = socket_obj.accept()
    print(fd)
    #异常处理,客户端关闭。windows直接抛ConnectionResetError.linux不断打印空
    try:
        #消息循环
        while True:
            data = fd.recv(1024)
            if not data:#linux不断打印空,直接跳出循环
                break
            print(data)
    except ConnectionResetError:
        print('客户端关闭')
    fd.close()
# 客户端
import socket, time

socket_obj = socket.socket()

socket_obj.connect(('127.0.0.1', 9000))

# 消息循环
while True:
    msg = input('请输入').strip()
    socket_obj.send(msg.encode('utf8'))
socket_obj.close()

 

 

posted @ 2020-12-25 16:25  枫叶学python  阅读(107)  评论(0)    收藏  举报