非同期ソケットを使用することで、サーバは着信接続をリッスンし、同期ソケットとは対照的に、他のロジックを実行することができます。リスンするとメインスレッドがブロックされ、アプリケーションが応答しなくなりクライアントが接続するまでフリーズします。
ソケットとネットワーク
私自身のネットワークの外にあるサーバーにアクセスするには?これは一般的な質問であり、質問されたときに主にトピックとしてフラグが立てられます。
サーバ側
サーバーのネットワーク上で、ルーターをサーバーに転送する必要があります。
サーバーが実行されている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:1234
: 10.10.10.10:1234
プロパティポートをルータに転送した場合、サーバとクライアントは問題なく接続されます。
ローカルIPに接続する場合は、ループバックアドレスを192.168.1.178
などに変更するだけで、portforwartを実行する必要はありません。
データの送信:
データはバイト配列で送信されます。データをバイト配列にパックし、もう片方に展開する必要があります。
ソケットに慣れている場合は、送信する前にバイト配列を暗号化することもできます。これは、誰もあなたのパッケージを盗むのを防ぎます。