TCP和UDP的区别以及使用python服务端客户端简单编程
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了TCP和UDP的区别以及使用python服务端客户端简单编程,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2668字,纯文字阅读大概需要4分钟。
内容图文
一、TCP、UDP区别总结
1、TCP面向连接(如打电话要先拨号建立连接);UDP是无连接的,即发送数据之前不需要建立连接
2、TCP提供可靠的服务,也就是说,通过TCP连接传送的数据,无差错,不丢失,不重复,且按序到达;UDP尽最大努力交付,即不保证可靠交付
3、UDP具有较好的实时性,工作效率比TCP高,适用于对高速传输和实时性较高的通信或广播通信
4、每一条TCP连接只能是点到点的;UDP支持一对一,一对多,多对一和多对多的交互通信
5、TCP对系统资源要求较多,UDP对系统资源要求较少
二、TCP服务端以及客户端编程
服务器端:
from socket import * #创建流式套接字 sockfd = socket(AF_INET,SOCK_STREAM,0) #绑定IP端口 sockfd.bind((‘192.168.80.217‘,8888)) #设置监听套接字,创建监听队列 sockfd.listen(5) while True: print("waiting for connect....") #等待客户端链接 connfd,addr = sockfd.accept() # accept函数主要用于服务器端,一般位于listen函数之后,默认会阻塞进程,# 直到有一个客户请求连接,建立好连接后,它返回的一个新的套接字connfd,# 此后,服务器端即可使用这个新的套接字connfd与该客户端进行通信,# 而sockfd则继续用于监听其他客户端的连接请求print("connect from",addr) while True: #收消息 data = connfd.recv(1024) ifnot data: breakprint(data.decode()) #发消息 connfd.send(‘来,确认下眼神‘.encode()) #关闭套接字 connfd.close() sockfd.close()
客户端:
from socket import * #创建套接字 sockfd = socket(AF_INET,SOCK_STREAM) #发起连接 sockfd.connect((‘192.168.80.217‘,8888)) while True: msg = input("发消息>>") #发送消息 sockfd.send(msg.encode()) ifnot msg: break#接收消息 data = sockfd.recv(1024) print(data.decode()) #关闭 sockfd.close()
三、UDP服务端以及客户端编程
服务器端:
from socket import * import sys from time import ctime #从命令行传入IP和端口 #python3 udp_server.py 172.60.50.42 8888if len(sys.argv) < 3: print(‘‘‘ argv is error!!! input as python3 udp_server.py 172.60.50.42 8888 ‘‘‘) HOST = sys.argv[1] PORT = int(sys.argv[2]) ADDR = (HOST,PORT) BUFFERSIZE = 1024 #创建数据报套接字 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()
客户端:
from socket import * import sys #从命令行传入IP和端口 #python3 udp_server.py 172.60.50.42 8888if len(sys.argv) < 3: print(‘‘‘ argv is error!!! input as python3 udp_server.py 172.60.50.42 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("消息>>") #直接回车退出ifnot data: break sockfd.sendto(data.encode(),ADDR) data,addr = sockfd.recvfrom(BUFFERSIZE) print(‘从服务器收到:‘,data.decode()) sockfd.close()
四、TCP和UDP编程步骤区别总结
1、创建套接字
TCP使用的是SOCK_STREAM(套接字类型:字节流),SOCK_STREAM这种的特点是面向连接的,即每次收发数据之前必须通过connect建立连接
UDP使用的是SOCK_DGRAM(套接字类型:数据包),SOCK_DGRAM这种是User Datagram Protocol协议的网络通讯,它是无连接的,不可靠的
2、TCP服务端使用listen开启监听以及accept阻塞进程来等待客户端连接,UDP是面向无连接的则不需要
3、收发消息
TCP使用的是recv()接收消息,send()发送消息
UDP使用的是recvfrom()循环接收数据,sendto()发送数据
*TCP一旦发生丢包,TCP将后续的包缓存起来,等前面的包重传并接收到后再继续发送,延时会越来越大
UDP对实时性要求较为严格的情况下,采用自定义重传机制,能够把丢包产生的延迟降到最低,尽量减少网络造成的影响
原文:https://www.cnblogs.com/hooo-1102/p/10766949.html
内容总结
以上是互联网集市为您收集整理的TCP和UDP的区别以及使用python服务端客户端简单编程全部内容,希望文章能够帮你解决TCP和UDP的区别以及使用python服务端客户端简单编程所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。