私は、TCPソケットを介して互いにプロセスに接続しようとしています。Python/C++リモートTCPソケット
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect(("localhost", 11111))
サーバ側が他の人によって書かれ、C++で実装されています。両方のプロセスは、クライアント側(のpythonのプロセス)で実行してローカルで実行されているとき、私は成功し、これを行っています。
#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](https://superuser.com/)のようなものです。 –
だから*あなたは何を求めているのですか? –
@JesperJuhlクライアントプロセスをAzure VMに移動する必要があります。これを行うには、クライアントプロセスコードを変更して、C++サーバーが見つかるようにする必要があると思います。私は、クライアントの接続を変更する際の指針を求めています。 Milesさんの提案によると、 "localhost"を自分のVMインスタンスのIPアドレスに変更し、ポート上のインバウンド/アウトバウンドトラフィックを有効にしましたが、接続はまだ失敗しています。 – Kevin