Socket 套接字
用于描述ip地址和端口,是一个通信链的句柄,应用程序通常通过“套接字”向网络发出请求或者应答网络请求。
socket模块是针对服务器端和客户端Socket进行【打开】【读写】【关闭】
最简单的代码范例:
服务器端:
import socket
#服务器端
ip_port = ('127.0.0.1',9999)#声明IP地址端口
sk = socket.socket()#生成socket句柄
sk.bind(ip_port)#绑定IP端口,以元组传入
sk.listen(5)#监听,最大允许连接5个
while True:
print('sever waiting...')
conn,addr = sk.accept() #服务器端会把客户端发过来的IP地址和端口生成一个实例(阻塞)。这个实例只为这个客户端服务。返回两个值
#返回两个值,conn是为客户端生成的实例,只为这个客户端服务 addr是客户端地址。
client_data = conn.recv(1024)#通过调用这个实例recv数据.参数是每次收取的数据大小
print(client_data)
conn.sendall('发回一句话') #这个时候客户端也要recv收取
conn.close()
客户端:
import socket
#客户端
ip_port = ('127.0.0.1',9999)
sk = socket.socket() #生成一个socket句柄
sk.connect(ip_port) #连接ip和端口
sk.sendall(bytes('发过去一句话','utf8')) #3.o后要发比特数据和编码
server_reply = sk.recv(1024) #接收到服务端发来那句话
print(str(server_reply,'utf8'))
sk.close()
服务端在每完成一个链接后进入等待,客户端每完成一次链接后会关闭