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