1、server.py
#coding=utf-8 # 测试Socket import socket server = socket.socket() #初始化 ip_port = ('127.0.0.1', 8081) server.bind(ip_port) #绑定ip和端口 server.listen(10) #监听,设置最大数量是10 print("开始等待接收客户端数据----") while True: conn, addr = server.accept() #获取客户端地址 print(conn, addr) print("客户端来数据了") while True: data = conn.recv(1024) #接收数据 print("接受的数据:", data) if not data: print("客户端丢失") break conn.send(data) #返回数据 server.close() #关闭socket
2、client.py
#coding=utf-8 # 测试Socket import socket client = socket.socket() #初始化 ip_port = ('127.0.0.1', 8081) #ip和端口 client.connect(ip_port) #连接服务器 while True: msg = input(">>:").strip() if len(msg) == 0 : continue client.send(msg.encode()) #发送数据 data = client.recv(1024) #接收数据 print("返回的数据:", data.decode()) client.close()
3、开启两个IDLE (Python 3.7 64-bit),各自执行server.py、client.py。
4、ConnectionRefusedError: [WinError 10061] 由于目标计算机积极拒绝,无法连接。
原因及解决办法:
a、Windows 防火墙拦截,需要把Windows 防火墙关闭。进入“控制面板\所有控制面板项\Windows 防火墙”,关闭Windows 防火墙。
b、在Python的IDLE运行客户端和服务器的代码,出现这样的错误,是因为它们公用了同一个进程。打开一个IDLE,运行服务器代码。再打开一个IDLE,运行客户端代码。(注意:是重新打开一个IDLE窗口,而不是在第一步的IDLE窗口Open打开)。这样才可以运行两个进程,实现进程间进行通信。Socket是指同一计算机的进程间或者不同计算机之间的通信。