网络编程---基于socket的UDP编程
Posted zhangjie19930507
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了网络编程---基于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()
以上是关于网络编程---基于socket的UDP编程的主要内容,如果未能解决你的问题,请参考以下文章