簡體   English   中英

TCP套接字定義為元組和python

[英]TCP Sockets defined as tuples and python

如果TCP套接字由4元組(源IP,源端口,目標IP,目標端口)定義,那么在執行以下Python代碼后(例如,當服務器應用程序設置為“監聽”此套接字)?

from socket import *
serverPort = 12000
serverSocket = socket(AF_INET,SOCK_STREAM)
serverSocket.bind((‘’,serverPort))
serverSocket.listen(1)
print ‘The server is ready to receive’

特別是,Python為服務器偵聽的套接字的目標值設置了什么? 這些值是隨機設置的嗎?如果是這樣,創建套接字后如何查看?

上面的代碼和問題摘自Kurose-Ross-Computer Networking,並與之相關。 提前致謝。

要查詢套接字的源地址和目標地址,請在套接字對象上調用getsockname()getpeername()方法。

在您的情況下, serverSocket.getsockname()返回('0.0.0.0', 12000)因為這是您指定的綁定地址。 服務器套接字上的getpeername()總是引發一個套接字。 socket.error: Transport endpoint is not connected因為服務器套接字無法連接到遠程對等方。

要使服務器套接字接受傳入的連接,必須調用其accept()方法 這將返回一個客戶端套接字,其對等方名稱將是(地址,端口)對,地址是對等方的IP地址,端口是分配用於與對等方通信的本地端口號。

如果TCP套接字由4元組定義(源IP,源端口,目標IP,目標端口)

不是。 這樣就定義了TCP 連接 TCP套接字只是一個端點。

那么在執行以下Python代碼之后(即,當服務器應用程序設置為“監聽”此套接字時)用Python創建的TCP套接字的值是什么?

它的本地端口為serverPort ,本地地址為0.0.0.0,沒有遠程地址或端口。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM