相关疑难解决方法(0)

TCP打孔问题

我试图使用本文中概述的原理为Python 3中的防火墙编写基本的TCP打孔器.但是我无法连接任何东西.这是代码:

#!/usr/bin/python3

import sys
import socket
import _thread as thread

def client():
    c = socket.socket()

    c.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
    c.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEPORT, 1)

    c.bind((socket.gethostbyname(socket.gethostname()), int(sys.argv[3])))
    while(c.connect_ex((sys.argv[1], int(sys.argv[2])))):
        pass
    print("connected!")
    thread.interrupt_main()

def server():
    c = socket.socket()

    c.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
    c.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEPORT, 1)

    c.bind((socket.gethostbyname(socket.gethostname()), int(sys.argv[3])))
    c.listen(5)
    c.accept()
    print("connected!")
    thread.interrupt_main()

def main():
    thread.start_new_thread(client, ())
    thread.start_new_thread(server, ())

    while True:
        pass

if __name__ == '__main__':
    main()
Run Code Online (Sandbox Code Playgroud)

我决定在我的本地计算机上尝试打孔器,这样我就可以捕获两个实例发送的所有流量.我首先建立了一个环回防火墙:

iptables -A INPUT -i lo -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A INPUT -i lo -j …
Run Code Online (Sandbox Code Playgroud)

python sockets tcp hole-punching

7
推荐指数
1
解决办法
2786
查看次数

在连接了会议点服务器之后,如何使2个客户端直接相互连接?

我正在写一个玩具会议点/中继服务器,在端口5555上监听两个客户端"A"和"B".

它的工作原理如下:服务器从第一个连接的客户端A接收的每个字节都将被发送到第二个连接的客户端B,即使A和B不知道它们各自的IP:

A -----------> server <----------- B     # they both connect the server first
A --"hello"--> server                    # A sends a message to server
               server --"hello"--> B     # the server sends the message to B
Run Code Online (Sandbox Code Playgroud)

此代码目前正在运行:

# server.py
import socket, time
from threading import Thread
socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
socket.bind(('', 5555))
socket.listen(5)
buf = ''
i = 0

def handler(client, i):
    global buf
    print 'Hello!', client, i 
    if i == 0:  # client A, who sends data to …
Run Code Online (Sandbox Code Playgroud)

python sockets networking nat hole-punching

6
推荐指数
1
解决办法
340
查看次数

标签 统计

hole-punching ×2

python ×2

sockets ×2

nat ×1

networking ×1

tcp ×1