连接到不同子网/域的python套接字

时间:2014-02-17 07:13:28

标签: python sockets

是否可以通过python套接字编程连接到不同的子网或域?

我想制作一个与朋友分享文件的脚本,但目前我只知道如何操作 在一个局域网内连接。

1 个答案:

答案 0 :(得分:1)

在局域网中,您应该广播数据包以发现彼此 每个对等体都应该监听端口接收广播。

它是发现协议,您可以通过UDP套接字实现它。

一旦两个对等体决定进行通信,它们应该创建一个TCP套接字。然后,他们可以通过TCP发送数据 或者您可以使用HTTP,XML-RPC等来传输数据(不是广播,TCP不支持广播)。


#udp broadcast
import socket, time

s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
s.setsockopt(socket.SOL_SOCKET, socket.SO_BROADCAST, 1)

while True:
    data = 'test'.encode()
    s.sendto(data, ('255.255.255.255', 1080))
    time.sleep(1)

#udp receive broadcast
import socket

s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
s.bind(('', 1080))

while True:
    print(s.recv(1024))