网络编程(关于TCP和UDP)

Posted fsrmyc

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了网络编程(关于TCP和UDP)相关的知识,希望对你有一定的参考价值。

TCP是传输控制协议,它提供的是面向连接,可靠的字节流服务,当客户和服务器彼此交换数据前,会进行三次还握手,之后才能传输数据,直到数据传输结束在进行一次三次握手。

优点:具有超时重发.丢弃重复数据.效验数据.流量控制等功能,保证了数据能从一端传到另一端。

缺点:传输大型文件时会产生粘包

使用TCP的应用:web浏览器.电子邮件.文件传输程序

 

UDP是用户数据报协议,是一个简单的面向数据报的运输层协议。不提供可靠性,只是把应用程序数据报发送出去,不保证是否能接收到数据,传递数据时不进行三次握手,没有重发机制,故而传输数据很快

优点 :传输快,一对一.一对多.多对多.多对一.面向报文,尽最大努力服务,不会产生粘包问题

缺点:不可靠,没有连接的服务

使用UDP的应用:视频流,电台

简单的TCP案例:

服务器端:

import socket
skt = socket.socket()
skt.bind((‘127.0.0.1‘,5000))#绑定ip地址和端口号
skt.listen() #监听链接
conn,addr = skt.accept()#接受客户端连接
ret = conn.recv(1024) #接受客户端1024个字节
print(ret) #打印客户端信息
conn.send(b"laowang") #向客户端发送信息
conn.close() #关闭客户端接字
skt.close() #关闭服务器接字

客户端:

import socket
skt = socket.socket() #创建客户套接字
skt.connect((‘127.0.0.1‘,5000))#尝试连接服务器
skt.send(b‘1111‘) #对话
ret = skt.recv(1024)# 发送/接收
print(ret)
skt.close() #关闭客户套接字

缺点是只能发一句话

 

以上是关于网络编程(关于TCP和UDP)的主要内容,如果未能解决你的问题,请参考以下文章

java网络编程TCP/UDP笔记

Python 之 Socket编程(TCP/UDP)

处理实时游戏中的网络丢包 - TCP 和 UDP

关于TCP和UDP的通俗理解

TCP和UDP套接字编程 (java实现)

网络协议 TCP/UDP/ICMP 的区别