2011-02-02 1 views
1

に送り出すところ、私はサーバーがポート5000でリッスンし、クライアントの発信ポートは、私がのStunnelがセットアップされている39000.クライアントは、ポート39000

であるTCPサーバ/クライアントを持っているTCPサーバ/クライアントのためのstunnelを使用する方法サーバー上:

[custom] 
accept = 6000 
connect = 5000 

...そう、それはポート6000で接続を受け入れ、(私のServer.cがリッスンしている)5000にそれをリダイレクトします。

私は次のようにクライアント上のstunnelを設定しようとした:

[custom_cl] 
accept = 39000 
connect = 192.168.1.3:6000 

...そう、それは(のは、それが192.168.1.3で、だとしましょう、ポート39000から任意のデータを受け取り、サーバーに送信しますそれは常にポート39000.上で送信されますように、私の問題は、私は「バインドできません受け取ることです...

client_addr.sin_family = AF_INET; 
client_addr.sin_port = htons(39000); 
client_addr.sin_addr.s_addr = inet_addr("0.0.0.0"); 
bzero(&(client_addr.sin_zero),8); 

if (bind(sock, (struct sockaddr *)&client_addr, sizeof(struct sockaddr)) 
                   == -1) { 
    perror("Unable to bind"); 
    exit(1); 
    } 

:すでにアドレス)ポートで6000

私のクライアントは、このコードを持っていますあなたにse "は(私が推測している)STunnelがポート39000でリッスンしているためです。私は何をしていますか?

答えて

1

発信接続用にソケットをバインドする必要はありません(何をしているのか、何のためのものなのか分からない限り)。ソケットを作成してconnect()を呼び出すだけです。宛先アドレスとしてlocalhost(または127.0.0.1)を渡し、宛先ポートとして39000を渡します。

+0

ありがとうございます! – Eddie

0

コードスニペットでは、39000への接続のクライアント側をバインドしています。それをしないでください。彼の答えで@Eugineの書き込みとしてconnect(2)を発行してください。

関連する問題