2016-06-27 15 views
-1

私は新しいソフトウェアを開発しています。私はTeamViewerやSkypeのようなそれらのアプリケーション間でコミュニケーションする必要があります。この挑戦のために、私はあまりにも多くの記事を読んでコードを書いていますが、私はそれをすることはできません。私はTCPを使用する必要があります、それはUDPにすることはできません。データの安全性は私のアプリにとって非常に重要です。 ネットワークプログラミング - アプリケーションコミュニケーション

http://www.codeproject.com/Articles/807861/Open-NAT-A-NAT-Traversal-library-for-NET-and-Mono

は、私が見つかりました。 N(etwork) (アドレス) T(ranslationが)私の問題を解決することができ、私はそれを使用しています。私は、彼らは2です、彼らが言うに同じコードを書く、まだ動作しません...

LISTENER CLIENT CODES

NatDiscoverer discoverer = new NatDiscoverer(); 
CancellationTokenSource cts = new CancellationTokenSource(5000); 
NatDevice device = await discoverer.DiscoverDeviceAsync(PortMapper.Upnp, cts); 

// display the NAT's IP address 
Console.WriteLine("The external IP Address is: {0} ", await device.GetExternalIPAsync()); 

// create a new mapping in the router [external_ip:1702 -> host_machine:1602] 
await device.CreatePortMapAsync(new Mapping(Protocol.Tcp, 1602, 1702, "For testing")); 

IPEndPoint endPoint = new IPEndPoint(IPAddress.Any, 1602); 
socket = new Socket(endPoint.AddressFamily, SocketType.Stream,ProtocolType.Tcp); 
socket.SetIPProtectionLevel(IPProtectionLevel.Unrestricted); 
socket.Bind(endPoint); 
socket.Listen(4); 

REQUESTの送信者CLIENT CODES

Socket sock = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); 
IPEndPoint ipep = new IPEndPoint(IPAddress.Parse("100.96.106.192"), 1602); 
       sock.Connect(ipep); 

クライアントと私はそれらのようにそれらをconenctしたい。 "100.96.106.192"はコンピュータのパブリックIP(ルーター(外部)IPではない)です。プラットフォームが独立してで動作する必要があるため、WCF以外の言語や他のライブラリを使用することもできます。

例えば、私はListener Clientを起動し、 'cmd'に「netstat -a」と書いて、0.0.0.0:1602を聞きます。しかし、なぜ?

私を助け、私を案内してください。私のコードは何が間違っていますか?私は間違って何をしていますか?どうすればこの問題を解決できますか?

ありがとうございました。良い日を過ごしてよろしいですか...

答えて

0

を「すべてのIPv4インターフェイス」をリッスンするリスナーに渡したので、これは0.0.0.0です。これはnetstatに0.0.0.0と表示されるはずです。マイクロソフトあたりとして

は、サーバーがすべてのネットワークインターフェイス上のクライアントアクティビティをリッスンする必要があることを示しIPアドレスを提供します。このフィールドは読み取り専用です。

Socket.Bindメソッドは、Anyフィールドを使用して、Socketインスタンスがすべてのネットワークインターフェイス上のクライアントアクティビティをリッスンする必要があることを示します。 Anyフィールドは、ドット付き4桁表記で0.0.0.0に相当します。

https://msdn.microsoft.com/en-us/library/system.net.ipaddress.any%28v=vs.110%29.aspx?f=255&MSPPError=-2147217396

+0

しかし、そこに書き込むために必要なもの? "100.96.106.192"(PC Public IP)と書くとエラーになります。 –

関連する問題