- TCP
服务段:
import socket
# 创建一个socket对象
# 默认参数:AF_INET时ipv4,SOCK_STREAM是指面向流TCP协议
with socket.socket() as s:
# 绑定一个ip和端口
s.bind(("192.168.122.1", 6874))
# 监听服务器
s.listen()
print('接收信息中...')
# 接收 s.accpet()返回两个值clientsocket是套接字对象,可以用来接收和发送数据,address是客户端ip和端口
clientsocket, address = s.accept()
# 解析信息
with clientsocket:
while True:
info = clientsocket.recv(1024).decode('utf-8')
print('接收到客户端信息:{}'.format(info))
# 给客户端寄信息
clientsocket.send(input(">>").encode())
客户端:
import socket
#创建一个socket对象
with socket.socket() as s:
#远程连接服务器,ip和端口必须和服务器一致
s.connect(('192.168.122.1',6874))
#进行通信,给服务端发送信息
while True:
#发送
s.send(input('>>').encode())
#接收
info=s.recv(1024).decode('utf-8')
print('来自服务端的信息:{}'.format(info))
- UDP
不需要在服务端监听
服务端:
import socket
HOST = '192.168.122.1'
PORT = 9678
server = socket.socket(family=socket.AF_INET, type=socket.SOCK_DGRAM)
# 绑定端口:
server.bind((HOST, PORT))
# 不需要调用监听方法
print('等待客户端的请求.....')
while True:
# 接收客户端的数据
data, addr = server.recvfrom(1024)
print("接收到客户端的信息:", data.decode('utf-8'))
recv_data = input("server>>").encode()
server.sendto(recv_data, addr)
客户端:
import socket
client = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
address = ('192.168.122.1', 9678)
while True:
msg = input('client>>')
msg = msg.encode()
client.sendto(msg, address)
print("接收到服务端的消息:", client.recv(1024).decode('utf-8'))