服務端發送消息
服務端代碼:
import socket
udp_server = socket.socket(type=socket.SOCK_DGRAM) # 將類型修改爲udp 包的模式
ip_port = ('127.0.0.1',8005)
udp_server.bind(ip_port)
from_client_msg,client_addr = udp_server.recvfrom(1024)
print(from_client_msg,client_addr)
客戶端代碼:
import socket
udp_client = socket.socket(type=socket.SOCK_DGRAM)
ip_prot = ('127.0.0.1',8005)
udp_client.sendto(b'hello',ip_prot)
首先運行服務端,隨後啓動客戶端.
客戶端幾乎瞬間結束,查看服務端,收到返回值
b'hello' ('127.0.0.1', 49814)
# 127.0.0.1 是本機IP,49814是系統隨機爲服務端分配的端口號
UDP不需要建立連接可以直接發送
客戶端接收消息
服務端代碼:
import socket
udp_server = socket.socket(type=socket.SOCK_DGRAM) # 將類型修改爲udp 包的模式
ip_port = ('127.0.0.1',8005)
udp_server.bind(ip_port)
from_client_msg,client_addr = udp_server.recvfrom(1024) #1024 是接收單位大小,單位是B 無上限
udp_server.sendto(b'This is a server',client_addr) #回覆信息 第一個參數是數據內容,第二格式發送給誰 對方的地址
print(from_client_msg,client_addr)
客戶端代碼:
import socket
udp_client = socket.socket(type=socket.SOCK_DGRAM)
ip_prot = ('127.0.0.1',8005)
udp_client.sendto(b'hello',ip_prot)
from_server_msg,server_addr = udp_client.recvfrom(1014)
print(from_server_msg,server_addr)
TCP是有連接過程的,UDP沒有直接綁定端口IP進行發送.
TCP 多人排隊聊天
服務端
import time
import socket
server = socket.socket()
ip_prot = ('127.0.0.1',8005)
server.bind(ip_prot)
server.listen(2) # 表示除去當前已經建立連接的還允許2個排隊
while 1:
conn,addr = server.accept()
while 1:
from_client_msg = conn.recv(1024)
print("客戶端消息:",from_client_msg.decode('utf-8'))
if from_client_msg.decode('utf-8') == 'quit':
break
to_client_msg = input("服務端發送 >>")
conn.send(to_client_msg.encode('utf-8'))
conn.close()
#server.close()
客戶端代碼
import time
import socket
client = socket.socket()
client.connect(('127.0.0.1',8005))
while 1:
to_server_msg = input("發送內容 >>")
client.send(to_server_msg.encode('utf-8'))
if to_server_msg == 'quit':
break
from_server_msg = client.recv(1024)
print("來自服務器消息: ",from_server_msg.decode('utf-8'))
client.close()
UDP多人聊天
客戶端代碼
import socket
udp_client = socket.socket(type=socket.SOCK_DGRAM)
ip_prot = ('127.0.0.1',8005)
while 1:
to_server_msg = input("客戶端說:")
udp_client.sendto(to_server_msg.encode("utf-8"),ip_prot)
from_server_msg,server_addr = udp_client.recvfrom(1014)
print(from_server_msg.decode("utf-8"),server_addr)
服務端
import socket
udp_server = socket.socket(type=socket.SOCK_DGRAM) # 將類型修改爲udp 包的模式
ip_port = ('127.0.0.1',8005)
udp_server.bind(ip_port)
while 1:
from_client_msg,client_addr = udp_server.recvfrom(1024) #1024 是接收單位大小,單位是B 無上限
print(from_client_msg.decode("utf-8"),client_addr)
to_client_msg = input("服務端說:")
udp_server.sendto(to_client_msg.encode('utf-8'),client_addr) #回覆信息 第一個參數是數據內容,第二格式發送給誰 對方的地址