Czs--从此蜕变

浅析udp

udp通信

1.创建套接字
sockfd=socket(AF_INET,SOCK_DGRAM)
2.绑定服务端地址
ADDR=('192.188.1.2',8888)
sockfd.bind(ADDR)
3.收发消息
data,addr=recvfrom(buffersize)
功能:接收数据报套接字消息
参数:每次最多接收消息的大小 单位:字节
返回值:data 接收到的消息,addr 消息发送者的地址
一次接收一个数据包,如果数据包一次没有接收完则会丢失没接收的内容
sendto(data,addr)
功能:发送消息
参数:data 要发送的消息
      addr 发送给某个主机的地址
返回值:发送消息的字节数
4.关闭套接字
close()

udp_client.py

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
from socket import *
import sys

#从命令行传入ip和端口
#python3 udp_server.py 127.0.0.1 8888
if len(sys.argv)<3:
print('''
argv is error
input as
python3 udp_server.py 127.0.0.1 8888
''')
host = sys.argv[1]
port = int(sys.argv[2])
addr = (host,port)
buffersize=1024

#创建数据报套接字
sockfd=socket(AF_INET,SOCK_DGRAM)

while True:
data = input('消息>>')
#回车退出
if not data:
break
sockfd.sendto(data.encode(),addr)
data,addr=sockfd.recvfrom(buffersize)
print('从服务器接收到:',data.decode())

sockfd.close()

udp_server.py

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
from socket import *
import sys
from time import ctime

#从命令行传入ip和端口
#python3 udp_server.py 127.0.0.1 8888
if len(sys.argv)<3:
print('''
argv is error
input as
python3 udp_server.py 127.0.0.1 8888
''')
host = sys.argv[1]
port = int(sys.argv[2])
addr = (host,port)
buffersize=1

#创建数据报套接字
sockfd=socket(AF_INET,SOCK_DGRAM)

#绑定地址
sockfd.bind(addr)

#收发消息
while True:
data,addr=sockfd.recvfrom(buffersize)
print('recv from %s:%s'%(addr,data.decode()))
sockfd.sendto\
(('[%s] 接收到消息'%ctime()).encode(),addr)

#关闭
sockfd.close()

🐶 您的支持将鼓励我继续创作 🐶