Tôi bắt đầu một máy chủ bằng cách sử dụng ổ cắm và muốn cho phép khách hàng kết nối với nó.Chuyển tiếp cổng trong python để cho phép các kết nối ổ cắm
self.sock.bind(('0.0.0.0',0)) # 0.0.0.0 will allow all connections and port 0 -> os chooses a open port.
stroke_port=self.sock.getsockname()[1]
self.sock.listen(75)
self.open_port_popup(stroke_port)
Bây giờ, để các khách hàng khác kết nối tôi có cổng chuyển tiếp thủ công và hoạt động tốt.
Tôi muốn thực hiện điều này theo cách tự động. -> Tôi cố gắng upnp.
import miniupnpc
def open_port(port_no):
'''this function opens a port using upnp'''
upnp = miniupnpc.UPnP()
upnp.discoverdelay = 10
upnp.discover()
upnp.selectigd()
# addportmapping(external-port, protocol, internal-host, internal-port, description, remote-host)
result=upnp.addportmapping(port_no, 'TCP', upnp.lanaddr, port_no, 'testing', '')
return result
Nó sẽ mở cổng được hiển thị trong hình bên dưới. Nhưng danh sách chuyển tiếp cổng được hiển thị trong hình ảnh đầu tiên trống. Nó không hoạt động và khách hàng không thể kết nối. Làm thế nào tôi có thể sửa lỗi này? Tôi đang thiếu gì?
Bạn có thể kết nối cục bộ không? –
@BrianCain Có, sử dụng 127.0.0.1 trên cùng một máy. –
Tôi nghĩ rằng "danh sách chuyển tiếp cổng trong hình ảnh đầu tiên" chỉ hiển thị ánh xạ thủ công. –