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