1000字范文,内容丰富有趣,学习的好帮手!
1000字范文 > 计算机网络-UDP和TCP套接字编程

计算机网络-UDP和TCP套接字编程

时间:2022-03-20 05:32:17

相关推荐

计算机网络-UDP和TCP套接字编程

目录

1. 基于UDP Socket API的网络应用开发

2.基于TCP Socket API的网络应用开发

1. 基于UDP Socket API的网络应用开发

实验内容: 编写基于UDP协议网络聊天程序,要求发送程序和接收程序能够接收键盘输入并彼此之间相互发送数据。实验原理:UDP套接字编程 UDP:在客户和服务器之间无“连接” 没有握手要建立发送方为每个分组附加上目的地址和端口号服务器必须从接收到的分组提取IP地址,端口号UDP: 接收到的传输数据可能失序或丢失基于UDP协议的无连接客户/服务器的工作流程:

1)编写服务器端程序

from socket import * # 导入socket模块######'''1.创建套接字'''serverSocket = socket(AF_INET,SOCK_DGRAM) # 创建UDP套接字serverPort = 12000serverSocket.bind(('192.168.43.30',serverPort)) # 绑定地址(IP+端口号)到套接字print("The server is ready to receive.\n")while True:######'''2.服务器接收客户发来的信息'''received_message, clientAddress = serverSocket.recvfrom(2048)#接收客户发来的数据print(" "+received_message.decode())#######'''3.服务器对客户发来的信息作出回应,给客户发信息 '''send_message_ToClient = input('Server:\n')serverSocket.sendto(send_message_ToClient.encode(),clientAddress)

2)编写客户端程序

from socket import * # 导入socket模块######'''1.创建套接字'''clientSocket = socket(AF_INET,SOCK_DGRAM)# 调用socket()创建UDP套接字serverName = '192.168.43.30' # 服务器IP地址serverPort = 12000 # 服务器端口号print("The client is ready to send.\n")while True:######'''2.客户输入信息,并发送给服务器'''send_message = input('Client:\n') # 客户要发送的信息clientSocket.sendto(send_message.encode(),(serverName, serverPort))# 使用sendto: 经clientSocket(UDP套接字)发送一个客户到服务器的数据报#######'''3.接收服务器发来的信息 '''receive_message, serverAddress = clientSocket.recvfrom(2048)# 使用recvfrom:客户等待接收服务器发来的数据print(""+receive_message.decode())#clientSocket.close() #关闭套接字

3)客户程序与服务器程序相互通信,实现网络聊天

2.基于TCP Socket API的网络应用开发

实验内容: 编写基于TCP协议网络聊天程序,要求发送程序和接收程序能够接收键盘输入并彼此之间相互发送数据。实验原理:使用TCP套接字编程 客户机必须联系服务器 服务器进程必须首先运行服务器必须已经生成套接字 (门) ,以欢迎客户机的联系客户机联系服务器,通过: 创建客户机本地TCP 套接字定义服务器进程的IP地址,端口号当客户机产生套接字时:客户机TCP创建到服务器TCP 的连接当客户机联系时, 服务器 TCP 为服务器进程生成新的套接字 ,以与客户机通信基于TCP协议的面向连接的客户/服务器的工作流程:

1)编写服务器端程序

#!/user/bin/env python3# -*- coding: utf-8 -*-from socket import *######'''1.创建套接字'''welcomeSocket = socket(AF_INET,SOCK_STREAM)#创建TCP套接字serverPort = 12000welcomeSocket.bind(('192.168.43.30',serverPort)) #绑定地址(IP+端口号)到套接字#等待并聆听某个客户敲门 1)此处和UDP不同,要监听welcomeSocket.listen(1)while True:# 新建一个套接字 1)此处和UDP不同,又新建了一个套接字connectionSocket, addr = welcomeSocket.accept()######''' 2.服务器接收客户发来的信息'''sentence = connectionSocket.recv(1024)#接收信息print(" "+sentence.decode())#######''' 3.服务器对客户发来的信息作出回应,给客户发信息 '''send_message_ToClient = input('Server:\n')connectionSocket.send(send_message_ToClient.encode()) #发送信息connectionSocket.close()#关闭连接

2)编写客户端程序

#!/user/bin/env python3# -*- coding: utf-8 -*-from socket import *from click._compat import raw_inputprint("The client is ready to send.\n")while True:######'''1.创建套接字'''clientSocket = socket(AF_INET, SOCK_STREAM) # 创建TCP套接字serverName = '192.168.43.30'serverPort = 12000clientSocket.connect((serverName, serverPort)) # 创建TCP连接 1)此处使用connect在客户和服务器之间创建一条TCP连接######'''2.客户输入信息,并发送给服务器'''send_message = raw_input('Client:\n') # 客户要发送的信息clientSocket.send(send_message.encode())# 1)此处使用send,不是sendto。2)而且此处不需要绑定目的地址+IP#######'''3.接收服务器发来的信息 '''receive_message, serverAddress = clientSocket.recvfrom(2048) # 使用recvfrom:客户等待接收服务器发来的数据print(""+receive_message.decode())clientSocket.close() #关闭连接'''sentence = raw_input('Input lowercase sentence:')clientSocket.send(sentence.encode()) #发送消息modifiedSentence = clientSocket.recv(1024) #接收消息print('From server:',modifiedSentence.decode())'''#clientSocket.close() #关闭连接

3)客户程序与服务器程序相互通信,实现网络聊天

参考:

https://jzplp./article/details/105984295 计算机网络自顶向下方法 第二章 2.7.1节 关于UDP与socket的小实验 基于python3 (课本Page108-110)

/feiyang5260/article/details/88728740 python网络编程之基于udp的简易聊天室实现

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。