32 网络编程

服务器代码

from socket import *
server = socket(AF-INET,SOCK_STREAM)
server.bind(("127.0.0.1",8080))
server.listen()
while True:
    client,addr = server.accept()
    while True:
       try:
            data = client.recv(1024)
            if not data:
                continue
            print(data.decode("utf-8"))
            data +=b"7777"
            client.send(data)
        except ConnectionResetError:
            print("一个客户端异常断线")
            break
View Code

客户端代码

from socket import *
client = socket(AF_INET,SOCK_STREAM)
client.connect(("127.0.0.1",8080))
while True:
       data = input(">>>>:")
        if not data:
            continue
        client.send(data.encode("utf-8"))
        data = client.recv(1024)
        print(data.decode("utf-8"))
View Code

重用端口号代码
s_socket.setsockopt(SOL_SOCKET,SO_REUSEADDR,1)

在服务器 接受了客户端的请求,则产生两个socket对象

一个是服务器socket,一个是接收对象后产生的临时socket对象

在收发消息的时候使用 客户端的临时对象, 服务器socket对象则主要负责建立连接

window 中客户端 强行退出的时候 服务器抛出 ConnectionResetError 异常

window 中 客户端 正常下线 服务器重复收空

linux 客户端 强行下线, 正常下线 服务器都是重复收空

猜你喜欢

转载自www.cnblogs.com/MrPotato-Head/p/10452526.html