Python / C ++ Remote TCP Socket

Я пытаюсь подключиться к процессам друг к другу через 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. У меня есть весь необходимый код для обработки всего, как только соединение установлено, но я не уверен, как настроить сокет для этого. Любая помощь будет принята с благодарностью!

0

Решение

Согласно вашему описанию, исходя из моего понимания, я думаю, что вы хотите развернуть серверный процесс C ++ на своем локальном компьютере, развернуть клиент Python на виртуальной машине Azure и заставить их взаимодействовать друг с другом. Так что это классическая модель связи C / S, вы можете подключить клиента к стороне сервера, если на вашем локальном компьютере установлен WAN ip. Если нет, вам нужно создать Azure VPN-шлюз в создать соединение Site-to-Site для связи с двумя процессами через собственный VPN VIP.

Надеюсь, поможет.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]