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