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