python内置模块socket模块可解决基于tcp和ucp协议的网络传输
一:基于udp协议进行网络传输
例1 :
server端:
import socket
sk = socket.socket(type=socket.SOCK_DGRAM) # 声明udp协议
sk.bind(('127.0.0.1', 9090)) # udp和tcp都是绑定自己的ip地址和端口号。udp没有listen和接收对方的地址。谁都可以给我发,只要在线就接。
while True:
msg, addr = sk.recvfrom(1024) # 收信息,最多1024个字节 # 服务端一定要先收到客户端的地址,因为他如果不知道地址也不知道发给谁
print(addr) # ('127.0.0.1', 63045) 发给我信息的ip地址和对方的端口
print(msg.decode('utf-8')) # 从物理层发过来的都是byte类型
msg_send = input('>>>')
sk.sendto(msg_send.encode('utf-8'), addr) # 发信息
sk.close()
client端
import socket
sk = socket.socket(type = socket.SOCK_DGRAM)
while True:
msg_send = input('>>>')
sk.sendto(msg_send.encode('utf-8'),('127.0.0.1',9090))
msg,addr = sk.recvfrom(1024)
print(msg.decode('utf-8'))
print('server addr :',addr) # server addr : ('127.0.0.1', 9090) 服务端的地址
sk.close()
运行结果
>>>吃了吗
吃了
>>>天气怎么样
挺好的
>>>听说明天有台风,做好防范的准备哦
好的
>>>
例2:多人同时向服务器发消息:
服务器端:
import socket
sk = socket.socket(type=socket.SOCK_DGRAM)
sk.bind(('127.0.0.1', 9847)) # 一旦绑定一个地址就是服务器
friends = {
'wendy':'\033[1;32;40mwendy : %s\033[0m', 'laura':'\033[1;33;44mlaura : %s\033[0m'}