2012-04-01 4 views
2

私のインターフェイスからcで書かれたデータを別のアプリケーション(C#)に取得しようとしていますCでWinSockを使用して同じマシン上の#アプリケーションにデータを送信する "ターゲットホストが接続を拒否しようとしています(C#パート)

は今、私はWinSocksは純粋なCであるかどうかわからないんだけど、私は、Visual Studioと私のインターフェイスの残りの部分を使用しています。ここ純度100%のC.

は、C#

で書かれた私の「クライアント」です

http://pastebin.com/X9SNcVqn

ここに私の "サーバ"はc - ループで書かれています接続を待っていて、これは問題なしでビルドして実行します。

注:DEFAULT_PORTは18042で、クライアント側とサーバー側で同じポートを使用します。

私はまた、この接続を許可するように私のWindowsファイアウォールとNORTONを通過しようとしたのwiresharkをダウンロードして、コマンド「tcp.portのEQ」

http://pastebin.com/FHZyre2V

を使用しました、私は何を把握することができませんでしする。 Windows 7で時代遅れの部分やタブ、オプションが変更された箇所のほとんど

私は使用されていなかったポートを選択しましたが、接続を見るためにwiresharkを使ってみました。 nmapので、前と後の私は、「サーバー」を走った、それは少なくともの

+0

あなたは、このような 'telnet'や' nc'など他のツールを使用してサーバーに接続できますか?あなたのクライアントは 'nc -l'サーバに接続できますか? – sarnold

+0

"サーバー"と "クライアント"は同じマシン上にあります。私は127.0.0.1か192.168.1.4(私のip)を使うべきかどうかわかりません。私は自分のコードで使用したポートを使ってパテを使って192.168.1.4に接続しようとしましたが、拒否されました。 –

答えて

1

。両方が必要ではなく、TcpClientだけが必要です。 (ソケットコードも間違ったポートを使用しています)。 TcpClientオブジェクトが接続されたら、GetStreamメソッドを呼び出して、読み書きしてサーバープロセスにデータを送受信するためのNetworkStreamオブジェクトを取得します。

は、ここでは、ドキュメントでサンプルコードを参照してください:http://msdn.microsoft.com/en-us/library/system.net.sockets.tcpclient.aspx

0

を作成しておく必要がありますので、あなたのクライアントコードが含まれています

IPEndPoint endPoint = new IPEndPoint(IPAddress.Parse("192.168.1.4"), 18041); 

を私は必ずしもネットワークカードにバインドされたIPアドレスを期待していませんlocalhostからlocalhostへの接続では必ず動作する必要があります。 127.0.0.1または別の適切なループバックアドレスを使用するようにクライアントを変更することをお勧めします。

+0

私はこれを使用していましたが、IPをconnect関数にハードコーディングしました。 'clientSocket.Connect(" 127.0.0.1 "、9997);' –

0

まず、IPアドレスが正しいか、対応するポートがリッスンしているかどうかを確認します。

netstat -an | find "port number"

と私は考えて、サーバー側のコードで

local.sin_port = (unsigned short)DEFAULT_PORT;

は次のようになります。

あなたがれるtcpClientとソケットオブジェクトを混合している、あなたのC#コードで

local.sin_port = htons((unsigned short)DEFAULT_PORT);

関連する問題