计算机网络 -UDP和TCP的简单实现 -应用层
程序员文章站
2022-03-11 08:23:22
...
计算机网络 -UDP和TCP的简单实现 -应用层
一、UDP套接字
1.1 UDPClient.py
import socket
ServerName = 'HostName' #这里的HostName是指IP地址,如果是主机名的话程序也会自动调用DNS服务器对IP地址进行查找
ServerPort = 12345#这里的端口号大家看心情给哈,我这个是随机的
clientsocket = Socket(AF_INET,SOCK_DGRAM)#这里的AF_INET指的是Ipv4,而后面那个SOCK_DGRAM指的是使用的协议是UDP
message = raw_input('请输入你要发送的信息:')#raw_input可以将后面的字符串作为提示信息,然后记录下接下来一行输入的信息
clientsocket.sendto(message.encode(),(ServerName,ServerPort))#这里使用encode是因为套接字只接受字节编码所以需要转换,而socket使用sendto表示想要发什么以及发给谁
modifiedMessage,serverAddress = clientsocket.recvfrom(2048)#modifiedMessage表示的是服务器发送给客户的信息(不过还是字节形式)
print(modifiedMessage.decode())#读取信息
clientsocket.close()
1.2UDPServer
import sockey
ServerPort = 12345
ServerSocket = Socket(AF_INET,SOCK_DRRAM)
ServerSocket.bind(('',ServerPort))#初始化接收,等待客户发送信息
print('服务器准备完毕,等待客户端...')
while True:
message,ClientAddress = ServerSocket.recvfrom(2048)
moddifiedMessage = '收到信息:'+message.decode()
ServerSocket.sendto(moddifiedMessage.encode(),(ClientAddress,ServerPort))
二、TCP套接字
2.1 TCPClient
import socket
ServerHost = 'HostName'
ServerPort = 54321
ClientSocket = socket(AF_INET,SOCK_STREAM)
ClientSocket.connect(ServerHost,ServerPort)#先建立握手连接,后面的连接是服务器重新创建的连接套接字,和这一个connect不是同一个
Message = raw_input('请输入要发送的信息')
ClientSocket.sendto(Message.encode())
ModdifiedMessage, ServerHost = ClientSocket.recv(2048)
print(ModdifiedMessage.decode())#服务器的回复
ClientSocket.close()
2.2 TCPServer
import socket
ServerPort = 54321
ServerSocket = socket(AF_INET,SOCK_STREAM)
ServerSocket.bind(('',ServerPort))
ServerSocket.listen(1)#这里规定请求连接的最大数
print('服务器已准备就绪,等待客户端发送消息..')
while True:
connectionSocket,addr = ServerSocket.accept()#同意客户发送的第二个socket
sentence = connectionSocket.recv(2048),decode()
capitalizedSentence = "已经收到:"+sentence
connectionSocket.send(capitalizedSentence.encode())#注意这里使用的是send而不是sendto
connectionSocket.close()#在UDP中Server不会主动关闭连接,但是在TCP中需要关闭每一个连接套接字。
2.3 TCP特点
- TCP可以保证服务器进程能够按发送的顺序接收。
- TCP会对请求的客户进程先进行一个握手连接,然后再重新生成一个套接字与客户进程连接。
- 操作系统自己就会将我们客户进程的信息写入。UDP其实也可以
推荐阅读
-
Java简单实现UDP和TCP的示例
-
使用C#实现基于TCP和UDP协议的网络通信程序的基本示例
-
lvs+keepalive实现双主模式(采用DR),同时实现TCP和UDP检测实现非web端的负载均衡,同时实现跨网段的通讯
-
nodejs简单实现TCP服务器端和客户端的聊天功能示例
-
网络编程概念、UDP通信程序和TCP通信程序的通信原理及实现程序
-
一个简单的TCP服务端和客户端的C实现
-
Python3学习(六):使用socket实现TCP协议的简单服务器和客户端
-
Day.55————C++ socket编程实现简单的UDP、TCP通信(服务端+客户端)
-
Socket TCP 协议实现服务端和客户端的简单通信
-
使用C#实现基于TCP和UDP协议的网络通信程序的基本示例