socket是进程之间通信一个工具,好比现实生活中的插座,所有的家用电器要想工作都是基于插座进行,进程之间想要进行网络通信需要socket。
socket服务端:等待其他进程的连接,可接受发来的消息,可以回复消息。
socket客户端:主动连接服务端,可以发生消息,可以接收回复。
import socket
#创建socket对象
socket_server = socket.socket()
#绑定ip地址
socket_server.bind(("localhost", 8888))
#监听端口
socket_server.listen(1) #允许连接数量
#等待客户端连接
# result: tuple = socket_server.accept()
# conn = result[0] #客户端和服务端的连接对象
# address = result[1] #客户端地址信息
conn, address = socket_server.accept()
print(f"接收到了客户端的连接,客户端的信息是{address}")
while True:
#接收客户信息
DATA = conn.recv(1024).decode("UTF-8")
#recv接收的参数是缓存区大小,一般给1024
#recv方法的返回值是一个字节数组,不是字符串,提供编码将字节数组转化为字符串
print(f"客户端发来的消息是{DATA}")
#发送回复消息
msg = input("请输入客户端回复的消息:") #将字符串编码为字节
if msg == "exit":
break
conn.send(msg.encode("UTF-8"))
#关闭连接
conn.close()
socket_server.close()
?
?
import socket
#创建socket对象
socket_client = socket.socket()
#连接服务器
socket_client.connect(("localhost", 8888))
while True:
#发送消息
msg = input("请输入给客户端发送的信息")
if msg == "exit":
break
socket_client.send(msg.encode("UTF-8"))
#接收消息
recv_ata = socket_client.recv(1024)
print(f"服务端回复的消息是{recv_ata.decode('UTF-8')}")
#关闭连接
socket_client.close()