Looking for c# Answers? Try Ask4KnowledgeBase
Looking for c# Keywords? Try Ask4Keywords

C# Language非同期ソケット


前書き

非同期ソケットを使用することで、サーバは着信接続をリッスンし、同期ソケットとは対照的に、他のロジックを実行することができます。リスンするとメインスレッドがブロックされ、アプリケーションが応答しなくなりクライアントが接続するまでフリーズします。

備考

ソケットとネットワーク

私自身のネットワークの外にあるサーバーにアクセスするには?これは一般的な質問であり、質問されたときに主にトピックとしてフラグが立てられます。

サーバ側

サーバーのネットワーク上で、ルーターをサーバーに転送する必要があります。

サーバーが実行されているPCの例:

ローカルIP = 192.168.1.115

サーバーはポート1234をリッスンしています。

Port 1234ルータの着信接続を192.168.1.115転送する

クライアント側

変更する必要があるのはIPだけです。ループバックアドレスに接続するのではなく、サーバーが稼働しているネットワークからのパブリックIPに接続する必要があります。このIPはここで入手できます

 _connectingSocket.Connect(new IPEndPoint(IPAddress.Parse("10.10.10.10"), 1234));

したがって、このエンドポイントでリクエストを作成します10.10.10.10:123410.10.10.10:1234プロパティポートをルータに転送した場合、サーバとクライアントは問題なく接続されます。

ローカルIPに接続する場合は、ループバックアドレスを192.168.1.178などに変更するだけで、portforwartを実行する必要はありません。

データの送信:

データはバイト配列で送信されます。データをバイト配列にパックし、もう片方に展開する必要があります。

ソケットに慣れている場合は、送信する前にバイト配列を暗号化することもできます。これは、誰もあなたのパッケージを盗むのを防ぎます。

非同期ソケット 関連する例