码迷,mamicode.com
首页 > 其他好文 > 详细

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

时间:2018-07-10 17:44:40      阅读:133      评论:0      收藏:0      [点我收藏+]

标签:bar   启动   发送   add   引用   copy   data   无限循环   技术分享   

 

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编程

标签:bar   启动   发送   add   引用   copy   data   无限循环   技术分享   

原文地址:https://www.cnblogs.com/zhangjie19930507/p/9290164.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!