Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/365.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python recvfrom返回的地址的第二部分是什么?_Python_Sockets_Networking_Udp - Fatal编程技术网

Python recvfrom返回的地址的第二部分是什么?

Python recvfrom返回的地址的第二部分是什么?,python,sockets,networking,udp,Python,Sockets,Networking,Udp,我正在使用来自 服务器: import socket UDP_IP="127.0.0.1" UDP_PORT=5005 sock = socket.socket( socket.AF_INET, # Internet socket.SOCK_DGRAM ) # UDP sock.bind( (UDP_IP,UDP_PORT) ) while True: data, addr = sock.recvfrom( 1024 ) # buffer

我正在使用来自

服务器:

import socket

UDP_IP="127.0.0.1"
UDP_PORT=5005

sock = socket.socket( socket.AF_INET, # Internet
                      socket.SOCK_DGRAM ) # UDP
sock.bind( (UDP_IP,UDP_PORT) )

while True:
    data, addr = sock.recvfrom( 1024 ) # buffer size is 1024 bytes
    print "received message:", data,"from", addr
客户:

import socket

UDP_IP="127.0.0.1"
UDP_PORT=5005
MESSAGE="Hello, World!"

print "UDP target IP:", UDP_IP
print "UDP target port:", UDP_PORT
print "message:", MESSAGE

sock = socket.socket( socket.AF_INET, # Internet
                      socket.SOCK_DGRAM ) # UDP
sock.sendto( MESSAGE, (UDP_IP, UDP_PORT) )
在服务器中,我修改了最后一行:

        print "received message:", data,"from", addr
所以它会打印出发送消息的地址。 在我的macbook上,端口似乎是40000或65000之间的随机数(我只是确定它似乎是随机的)


知道这可能是什么吗?

肯定是端口。您可以在发送方使用
print sock.getsockname()
进行验证

你也可以故意用e设置它。g<代码>sock.bind((“”,54312))在
sock.sendto()
行之前

在软件检查发送方的端口范围时,这可能很有用:端口0..1023是特权端口-在许多操作系统下,只有
root
才允许绑定到这些端口

然而,在大多数情况下,改变它是没有意义的,所以最好还是保持原样


此端口的含义是元组的第四个元素,用于标识连接或连接的对应项。元组是(源ip、源ip、目的ip、目的ip)

它是客户端用来向服务器发送数据的一种方法。

我不太了解这种端口的用途,这个端口在这里吗?因此一个应用程序需要进行一些更改以做出某种回答?其想法是,对于需要长时间监听的重要内容,需要使用数量较少的端口,因此,不要妨碍它们,客户端应用程序从当时可用的任何高端端口发送。我的意思是,我不能指定要使用的端口吗?用于客户端发送的端口?不,你为什么要这么做?服务器从哪个端口发送,客户端从哪个端口发送,这一点很重要。我了解范围,但这个端口的用途是什么?我能用它做什么?我只想使用一个特定的端口。。。