当前位置: 代码迷 >> python >> Python udp socket.recv将从哪个数据包接收?
  详细解决方案

Python udp socket.recv将从哪个数据包接收?

热度:32   发布时间:2023-06-27 21:24:38.0

我刚刚开始在python中使用udp,并想出了以下客户端来与正在编写的服务器进行来回通信。 我的问题是关于recvfrom呼叫。 它会收到什么数据包? 它会收到任何数据包,还是会发生一些注册,说我想要发送给我的东西的结果? 我对较低级别的功能更感兴趣,例如正在执行什么系统调用。

#!/usr/bin/python3
# shell.py
#
# Usage:
#
#       ./shell.py <IP_ADDR> <PORT>


import sys
import socket

SERVER_IP = sys.argv[1]
SERVER_PORT = int(sys.argv[2])
MAX_MESSAGE_LEN = 4096

# set up the right socket type

sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
target = (SERVER_IP, SERVER_PORT)

try:
    while True:
        data = input("> ")
        sent = sock.sendto(data.encode('utf-8'), target)

        data, server = sock.recvfrom(MAX_MESSAGE_LEN)

        print(repr(server))
        print("Got {}".format(data))
finally:
    print("Closing socket")
    sock.close()

socket.recvfrom在C中实现:

如果您想确切知道它在做什么。

要回答问题的另一部分,UDP是无连接的,因此不涉及握手或注册。 它将读取您发送到该端口的所有数据。

  相关解决方案