0
我想通过TCP套接字连接到彼此的进程。我已经成功地做到了这一点,当这两个过程都做在客户端(一个Python进程)在本地运行:Python/C++远程TCP套接字
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;
}
}
不过,我现在需要有我的本地机器上运行的客户端在微软Azure虚拟机实例运行时服务器进程。一旦建立连接,我已经拥有所有必要的代码来处理所有事情,但我不确定如何为此设置套接字。任何帮助将不胜感激!
服务器看起来应该可以正常工作。只需将“localhost”替换为客户端代码中Azure主机的地址即可。您可能需要在服务器上配置防火墙以允许远程连接,但怎么做似乎更像是[SuperUser](https://superuser.com/)问题。 –
那你特别*要问什么? –
@JesperJuhl我需要将客户端进程移动到Azure虚拟机。这样做,我相信我需要修改客户端进程代码,以便它仍然可以找到C++服务器。我正在寻求修改客户端连接的指导。根据每英里的建议,我已将“localhost”更改为我的VM实例的IP地址,并通过我的端口启用了入站/出站流量,但连接仍然失败。 – Kevin