Socket编程实验


一、实验目的

  1. 了解Socket通信的概念,掌握Socket通信的编程方法
  2. 理解TCP和UDP协议的工作原理与工作过程
  3. 编写基于TCP和UDP的客户/服务器的程序,来了解两者的工作流程
  4. 要求能够在自己的电脑上运行程序并进行数据传输

二、实验内容

  1. 阅读API编程 PPT。了解 socket 编程的基本知识。

  2. 编写基于 TCP 的客户/服务器程序。

  3. 编写基于 UDP 的客户/服务器程序。

三、实验原理

C 库中包含了用语网络通信的 socket 套接字。Socket 套接字分为流式套接口、 数据报套接口及原始套接口 3 类,本实验中将涉及到前两者:

流式套接口定义了一种可靠的面向连接的服务,实现了无差错无重复的顺序数 据传输(TCP)。

数据报套接口定义了一种无连接的服务, 数据通过相互独立的报文进行传输, 是无序的, 并且不保证可靠,无差错(UDP)。

四、实验步骤

(一)基于UDP的客户/服务器编写

(二)基于TCP的客户/服务器编写

五、实验结果及分析

(一)基于UDP的客户/服务器

客户端代码

from socket import *

serverName = 'localhost'
serverPort = 12000
clientSocket = socket(AF_INET, SOCK_DGRAM)
message = input()
clientSocket.sendto(message.encode(), (serverName, serverPort))
modifiedMessage, serverAddress = clientSocket.recvfrom(2048)
print('From Server: ', modifiedMessage.decode())
clientSocket.close()

服务器端代码

from socket import *

serverPort=12000
serverSocket=socket(AF_INET,SOCK_DGRAM)
serverSocket.bind(('',serverPort))
print("The srever is ready to receive")
while True:
    
    message,clientAddress=serverSocket.recvfrom(2048)
    
    modifiedMessage=message.decode().upper()
    
    serverSocket.sendto(modifiedMessage.encode(),clientAddress)

测试结果

(二)基于TCP的客户/服务器编写

客户端代码

from socket import *

serverName = 'localhost'
serverPort = 12000
clientSocket = socket(AF_INET, SOCK_STREAM)
clientSocket.connect((serverName, serverPort))
sentence = input()
clientSocket.send(sentence.encode())
modifiedSentence = clientSocket.recv(1024)
print('From Server: ', modifiedSentence.decode())
clientSocket.close()

服务器端代码

from socket import *

serverPort = 12000
serverSocket = socket(AF_INET,SOCK_STREAM)
serverSocket.bind(('',serverPort))
serverSocket.listen(1)
print('The server is ready to receive')
while True:
    connectionSocket, addr = serverSocket.accept()
    sentence = connectionSocket.recv(1024)
    capitalizedSentence = sentence.upper()
    connectionSocket.send(capitalizedSentence)
    connectionSocket.close()

测试结果

七、实验心得体会

通过该实验,了解了socket编程的基本方法,学习了利用TCP和UDP进行简单的数据传输。编写基于TCP和UDP的客户/服务器的程序,了解了两者的工作流程和协议工作原理。在实验过程中,也对应用层有了更直观和深入的理解。


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM