如何通过袜子发送UDP数据包?

问题描述 投票:-1回答:1

此代码可用于TCP连接:

import sockets
import socks
import random

data = random._urandom(1024)
socks.setdefaultproxy(socks.PROXY_TYPE_SOCKS5, "IP_SOCK", PORT_SOCK, True)
s = socks.socksocket()
s.connect(("IP_DST",PORT_DST))
s.send(data)

我可以使用UDP协议做类似的事情吗?

我尝试过:

import socket
import socks
import random

data = random._urandom(1024)
socks.setdefaultproxy(socks.PROXY_TYPE_SOCKS5, "IP_SOCK", PORT_SOCK, True)
s = socks.socksocket()
s.sendto(data, ('IP_DST',PORT_DST))

但是我收到OSError:

Traceback (most recent call last):
  File "udp_test.py", line 8, in <module>
    s.sendto(data, ('IP_DST',PORT_DST))
  File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/socks.py", line 365, in sendto
    return super(socksocket, self).sendto(bytes, *args, **kwargs)
OSError: [Errno 57] Socket is not connected
python python-3.x sockets udp socks
1个回答
0
投票

socks.socksocket()与Python的socket()函数具有相同的参数。没有任何参数,它将创建一个TCP(socket())套接字,因此需要先调用SOCK_STREAM,然后才能发送或读取任何数据。要创建UDP(s.connect())套接字,您必须更明确地了解需要那种套接字:

SOCK_DGRAM
© www.soinside.com 2019 - 2024. All rights reserved.