2016-09-15 7 views
-1

私はクライアントとしてPythonを使用し、サーバーとしてC++を使用してクライアントサーバーアプリケーションを実行しようとしています。Pythonクライアント - C++サーバー接続が拒否されたエラー

2つは別々のマシンにあります - 今は私のMacBook Proでpythonクライアントを実行しています。サーバーは私が持っているLinuxデスクトップです。

私は、次のようにして自分のLinuxボックスにsshをすることができています:その後、

ssh [email protected] 

そして、何の問題もなくsshをすることができることにもかかわらず、私のパスワード

に入る、私はポート/ソケット接続を取得することはできません働くここで

は私のpythonのコードです:

import socket, time 

client = socket.socket(socket.AF_INET, socket.SOCK_STREAM) 
client.connect(('[email protected]', 9999)) 
print client.send('Hello world!'), 'bytes sent.' 
time.sleep(0.2) 
print 'Received message:', client.recv(1024) 

そして、ここでは(このサイトから借りてきた:http://www.cs.utah.edu/~swalton/listings/sockets/programs/part2/chap6/simple-server.c)私のC++サーバーです

#define MY_PORT  9999 
#define MAXBUF  1024 

int main(int Count, char *Strings[]) 
{ int sockfd; 
    struct sockaddr_in self; 
    char buffer[MAXBUF]; 

    /*---Create streaming socket---*/ 
    if ((sockfd = socket(AF_INET, SOCK_STREAM, 0)) < 0) 
    { 
     perror("Socket"); 
     exit(errno); 
    } 

    /*---Initialize address/port structure---*/ 
    bzero(&self, sizeof(self)); 
    self.sin_family = AF_INET; 
    self.sin_port = htons(MY_PORT); 
    self.sin_addr.s_addr = INADDR_ANY; 

    /*---Assign a port number to the socket---*/ 
    if (bind(sockfd, (struct sockaddr*)&self, sizeof(self)) != 0) 
    { 
     perror("socket--bind"); 
     exit(errno); 
    } 

    /*---Make it a "listening socket"---*/ 
    if (listen(sockfd, 20) != 0) 
    { 
     perror("socket--listen"); 
     exit(errno); 
    } 

    /*---Forever... ---*/ 
    while (1) 
    { 
     int clientfd; 
     struct sockaddr_in client_addr; 
     int addrlen=sizeof(client_addr); 

     /*---accept a connection (creating a data pipe)---*/ 
     clientfd = accept(sockfd, (struct sockaddr*)&client_addr, &addrlen); 
     printf("%s:%d connected\n", inet_ntoa(client_addr.sin_addr), ntohs(client_addr.sin_port)); 

     /*---Echo back anything sent---*/ 
     send(clientfd, buffer, recv(clientfd, buffer, MAXBUF, 0), 0); 

     /*---Close data connection---*/ 
     close(clientfd); 
    } 

    /*---Clean up (should never get here!)---*/ 
    close(sockfd); 
    return 0; 
} 

私は実際には2つの別々のものを試してみましたPython /クライアントの側:

client.connect(('[email protected]', 9999)) 

は、私はこのエラーを取得する: socket.gaierror:[errnoを8]ノード名もservnameの提供、または私はしかし場合

を知られていない:

client.connect(('address.hopto.org', 9999)) 

ユーザ名部分なし.. 。私はこのエラーが表示されます:

socket.error: [Errno 61] Connection refused 

私は私のLinuxボックスに接続を "ブロック"しているが、私はパスワードを持っていると思っていますそれをここに含める方法は分かりません。

私はネットワーキングコードの初心者ですので、これは非常に慣れていません。

+0

接続アドレスは、IPアドレス(127.0.0.1)またはDNS名(address.hopto.org)になります。 @記法は電子メール用です。 address.hopto.org 9999にtelnetで接続して、サーバーが稼動しているかどうか確認できます。サーバーとリモートボックスのローカルボックスで試してみてください。また、netstat -alnp |サーバーボックスにgrep 9999と入力します。あなたはLISTEN表記を探しています。 –

答えて

0

通常、接続が拒否されたということは、ホストに到達可能だがポートは開かれていないことを意味します。
リクエストがファイアウォールによってブロックされているか、サーバーが正しく動作していない可能性があります。

ファイアウォールの問題を回避します。私はあなたがサーバーと同じボックスにpythonスクリプトを実行し、それを最初に接続するために127.0.0.1を使用することをお勧めします。

関連する問題