【问题标题】:Python/C++ Remote TCP SocketPython/C++ 远程 TCP 套接字
【发布时间】:2017-11-01 20:42:29
【问题描述】:

我正在尝试通过 TCP 套接字相互连接进程。当两个进程都在本地运行时,我已经成功地做到了这一点,方法是在客户端(python 进程):

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect(("localhost", 11111))

服务器端是别人写的,用C++实现的。

#define WIDTH 640
#define HEIGHT 480
#define DEPTH 3
#define BUFS (WIDTH*HEIGHT*DEPTH)
int sockfd, newsockfd, portno;
struct sockaddr_in serv_addr, cli_addr;
socklen_t clilen;

void netx_setup()
{     
     sockfd = socket(AF_INET, SOCK_STREAM, 0);
     if (sockfd < 0) 
        error("ERROR opening socket");
     bzero((char *) &serv_addr, sizeof(serv_addr));
     portno = 11111;
     serv_addr.sin_family = AF_INET;
     serv_addr.sin_addr.s_addr = INADDR_ANY;
     serv_addr.sin_port = htons(portno);
     if (bind(sockfd, (struct sockaddr *) &serv_addr,
              sizeof(serv_addr)) < 0) 
              error("ERROR on binding");
     listen(sockfd,5);
     clilen = sizeof(cli_addr);

     std::cout<<"Waiting for connection\n";
     newsockfd = accept(sockfd, 
                 (struct sockaddr *) &cli_addr, 
                 &clilen);
         if (newsockfd < 0) 
              {
                std::cout<<"No connection!\n";
                newsockfd=0;
              }
}

但是,我现在需要让服务器进程在我的本地计算机上运行,​​而客户端在 Microsoft Azure VM 实例上运行。建立连接后,我已经准备好所有必要的代码来处理所有事情,但是我不确定如何为此设置套接字。任何帮助将不胜感激!

【问题讨论】:

  • 服务器看起来应该可以正常工作。只需将 "localhost" 替换为客户端代码中的 Azure 主机地址即可。您可能需要在服务器上配置防火墙以允许远程连接,但如何做到这一点似乎更像是一个SuperUser 问题。
  • 那么您具体要问什么?
  • @JesperJuhl 我需要将客户端进程移动到 Azure VM。在这样做时,我相信我需要修改客户端进程代码,以便它仍然可以找到 C++ 服务器。我正在寻求有关修改客户端连接的指导。根据 Miles 的建议,我已将“localhost”更改为我的 VM 实例的 IP 地址,并通过我的端口启用了入站/出站流量,但连接仍然失败。

标签: python c++ sockets azure tcp


【解决方案1】:

根据您的描述,根据我的理解,我认为您希望将您的C++服务器进程部署在本地机器上,并将Python客户端部署在Azure VM上,并使它们相互通信。所以这是一个经典的 C/S 通信模型,如果你的本地机器有一个 WAN ip,你可以让你的客户端连接到服务器端。如果没有,则需要创建一个Azure VPN Gatewaycreate a Site-to-Site connection,以便两个进程通过各自的VPN VIP 进行通信。

希望对你有帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-11-26
    • 1970-01-01
    • 1970-01-01
    • 2015-08-04
    • 2015-12-14
    • 1970-01-01
    • 2013-05-27
    • 1970-01-01
    相关资源
    最近更新 更多