- TCP
tpye = SOCK_STREAM
server.py
import socket
# 不传参数,默认使用基于网络类型的套接字,协议:TCP
server = socket.socket()
# 告诉别人server的地址和端口
# 端口的范围是0-65535,但是0-1023这些是默认端口不能使用
server.bind(('192.168.1.107', 18080))
# 能同时接受的连接
server.listen()
# 接受客户端的连接,阻塞等待
conn, addr = server.accept()
while 1:
msg_r = conn.recv(1024).decode('utf-8')
if msg_r == 'q':
break
print(msg_r)
msg_s = input('>>>')
conn.send(msg_s.encode('utf-8'))
if msg_s == 'q':
break
conn.close()
server.close()
client.py
import socket
client = socket.socket()
client.connect(('192.168.1.107', 18080))
while 1:
msg_s = input('>>>')
client.send(msg_s.encode('utf-8'))
if msg_s == 'q':
break
msg_r = client.recv(1024).decode('utf-8')
if msg_r == 'q':
break
print(msg_r)
client.close()
- UDP
tpye = SOCK_DGRAM
优势:一个服务器可以和多个客户端进行通信
server.py
import socket
# 不传参数,默认使用基于网络类型的套接字,协议:UDP
server = socket.socket(type=socket.SOCK_DGRAM)
# 告诉别人server的地址和端口
# 端口的范围是0-65535,但是0-1023这些是默认端口不能使用
server.bind(('192.168.1.107', 18080))
while 1:
msg_r, addr = server.recvfrom(1024)
if msg_r.decode('utf-8') == 'q':
break
print(msg_r.decode('utf-8'), addr)
msg_s = input('>>>')
server.sendto(msg_s.encode('utf-8'), addr)
if msg_s == 'q':
break
server.close()
client.py
import socket
client = socket.socket(type=socket.SOCK_DGRAM)
while 1:
msg_s = input('>>>')
client.sendto(msg_s.encode('utf-8'), ('192.168.1.107', 18080))
if msg_s == 'q':
break
msg_r, addr = client.recvfrom(1024)
if msg_r.decode('utf-8') == 'q':
break
print(msg_r.decode('utf-8'))
client.close()
来源:CSDN
作者:小依子
链接:https://blog.csdn.net/weixin_43382257/article/details/104080129