记录:备忘录。
1.socket
from socket import *
#1.创建socket
serverSocket = socket(AF_INET, SOCK_STREAM)
#2.绑定端口和地址
addrInfo = ("192.168.109.1",8082)
serverSocket.bind(addrInfo)
#3.设置为非阻塞socket
serverSocket.setblocking(False)
#4.设置监听参数
serverSocket.listen(50)
#5.定义list保存已经连接的客户端信息
clientAddrList = []
#6.循环
while True:
try:
#7.等待连接
clientSocket,clientAddr = serverSocket.accept()
except:
pass
else:
print("新增一个客户端:%s"%str(clientAddr))
clientSocket.setblocking(False)
# 8.把新增连接加入到list中
clientAddrList.append((clientSocket,clientAddr))
# 9.遍历socket列表
for clientSocket,clientAddr in clientAddrList:
try:
recvData = clientSocket.recv(1024)
except:
pass
#10.接收到数据并处理
else:
if len(recvData) >0:
print("%s:%s" % (str(clientAddr), recvData))
# 11.客户端断开连接
else:
clientSocket.close()
clientAddrList.remove((clientSocket, clientAddr))
print("%s 下线" % str(clientAddr))
2.socket
import select
import socket
import sys
#1.创建socket
serverSocket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
#2.绑定地址
serverSocket.bind(('', 8096))
#3.设置监听参数
serverSocket.listen(10)
#4.入参设置
inputs = [serverSocket, sys.stdin]
runFlag = True
while True:
#5.调用select函数
readable, writeable, exceptional = select.select(inputs, [], [])
#6.遍历已读数据
for sock in readable:
# 7.监听新的连接
if sock == serverSocket:
conn, addr = serverSocket.accept()
inputs.append(conn)
# 8.监听键盘输入
elif sock == sys.stdin:
cmd = sys.stdin.readline()
runFlag = False
break
# 9.有数据到达
else:
# 10.读取客户端发送的数据
data = sock.recv(1024)
if data:
#11.打印接收的数据
print(str(data, encoding="gbk"))
# 12.向客户端发送数据
sock.send("服务端已经接收到数据.".encode("gbk"))
else:
# 13.移除select监听的socket
inputs.remove(sock)
sock.close()
# 退出
if not runFlag:
break
serverSocket.close()
3.测试工具
NetAssist工具辅助测试。
以上,感谢。