网络编程---基于socket的UDP编程

udp是无链接的,先启动哪一端都不会报错

udp不需要经过3次握手和4次挥手,不需要提前建立链接,直接发送数据即可

udp服务端

1 ss = socket()   #创建一个服务器的套接字
2 ss.bind()       #绑定服务器套接字 3 inf_loop: #服务器无限循环 4 cs = ss.recvfrom()/ss.sendto() # 对话(接收与发送) 5 ss.close() # 关闭服务器套接字

udp客户端

cs = socket()   # 创建客户套接字
comm_loop:      # 通讯循环
    cs.sendto()/cs.recvfrom()   # 对话(发送/接收) cs.close() # 关闭客户套接字

服务端:

复制代码
# import socket
from socket import *   # 尽量少用这种导入方式,会将所有名字加入名称空间,容易导致重复 # server = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) # 可以看到需要引用的socket的模块非常多。改用from socket import *导入 server = socket(AF_INET, SOCK_DGRAM) # SOCK_STREAM指的流式协议,SOCK_DGRAM指得是数据报协议(但凡发数据,就已经是完整的数据报) server.bind(('127.0.0.1', 8080)) # server.listen(5) # 挂起的链接数,TCP协议需要,UDP不需要 # while True: # conn, addr = server.accept() # 用来建立链接,UDP不需要 while True: data, client_addr = server.recvfrom(1024) # 收消息 print(data) server.sendto(data.upper(), client_addr) # 发消息,取收消息的地址 server.close()
复制代码

客户端:

 
from socket import *

client = socket(AF_INET, SOCK_DGRAM)

while True:
    msg = input('>>: ').strip()
    client.sendto(msg.encode('utf-8'), ('127.0.0.1', 8080))  # 发消息

    data, server_addr = client.recvfrom(1024)   # 收消息
    print(data, server_addr)

client.close()
 
 
 
 
 

猜你喜欢

转载自www.cnblogs.com/zhangjie19930507/p/9290164.html