繁体   English   中英

我们如何通过套接字编程(Python)与不同网络上的服务器和客户端建立服务器和客户端之间的连接?

[英]How could we establish connection between server and client through socket programming(Python) with server and client on different networks?

我们如何通过套接字编程(Python)与不同设备和不同网络上的服务器和客户端建立服务器和客户端之间的连接? 当我们使用 i/p 地址和服务器端口创建套接字时,如果两个设备都连接在同一网络上,则服务器和客户端将连接。 但是对于不同的网络,情况并非如此。 需要做什么来连接它们?

import socket
def server_program():
    host = socket.gethostname()
    port = 5000 
    server_socket = socket.socket()  
    server_socket.bind((host, port)) 
    server_socket.listen(2)
    conn, address = server_socket.accept()  
    print("Connection from: " + str(address))
    while True:
        data = conn.recv(1024).decode()
        if not data:
            break
        print("from connected user: " + str(data))
        data = input(' -> ')
        conn.send(data.encode())  
    conn.close()  

if __name__ == '__main__':
    server_program()
import socket
def client_program():
    host = socket.gethostname()   // used ngrok i/p here
    port = 5000                   // used ngrok port no
    client_socket = socket.socket()  
    client_socket.connect((host, port))
    message = input(" -> ") 

    while message.lower().strip() != 'bye':
        client_socket.send(message.encode()) 
        data = client_socket.recv(1024).decode() 

        print('Received from server: ' + data)

        message = input(" -> ") 
    client_socket.close() 

if __name__ == '__main__':
    client_program()

要在不同网络上的服务器和客户端之间建立连接,您需要使用端口转发,或者您可以借助一些外部软件,例如ngrok

你如何使用 ngrok?

  1. 首先,您需要注册。
  2. 下载 ngrok 软件
  3. 现在你会得到这样的屏幕

在此处输入图像描述

  1. 复制行./ ngrok authtoken.........

  2. 打开 cmd 并 cd 进入您下载 ngrok 的文件夹

  3. 粘贴复制的命令(注意- 如果您使用的是 windows,请从命令的开头删除./ )并按 Enter

  4. 输入以下命令

ngrok tcp [Port on which your server is listening]

例如 - 如果您的服务器正在侦听端口 65432,那么您必须输入以下命令

ngrok tcp 65432

您现在应该看到像这样的 window

在此处输入图像描述

  1. 从 window 复制x.tcp.ngrok...... (在上图中突出显示)
  2. 打开 cmd 并输入ping [copied text here] output 应该是这样的:
Pinging x.tcp.ngrok...... [ip here] with 32 bytes of data:
....
....
....
  1. 复制 ip

  2. 现在在您的client.py文件中,将 ip 替换为您复制的 ip

  3. 从 ngrok window 复制端口(在上图中突出显示的文本旁边,在我的例子中是 11171)

  4. client.py文件中的端口替换为您复制的端口

  5. server.py中将主机更改为"0.0.0.0"

  6. 现在您已全部设置为 go! 客户现在可以从全球各地连接到您的服务器

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM