ソケットを操作するにはサーバーが必要ですか?どちらのホストもサーバーでなくても、他のクライアントに直接パケットを送信して受信できますか?
3 に答える
2台のコンピューターが通信できますが、一方はサーバーで、もう一方はクライアントである必要があります。それらは役割を交換することができ、それぞれが他の反対になることができます。
はい、できます。まったく同じコンピューターでも。それらが同じポートを使用していることと、クライアントが localhost に接続しようとしていることを確認してください。私は定期的にこの手法を使用して、ネットワーク アプリをテストしています。
ソケット プログラミングにおけるクライアント/サーバーの区別は、思ったほど具体的ではありません。基本的には、2 台のマシンの接続方法に関係しています。
サーバーはbind
、listen
、およびを使用して、accept
着信接続を常に待機します。クライアントはサーバーの IP アドレスを知っている必要があります。これが、サーバーの IP アドレスにマップされる覚えやすい名前を提供するために、URL と DNS が存在する理由です。
クライアントconnect()
がaccept()
サーバーによって処理された後、違いはほぼなくなります。クライアントとサーバーは、必要なときにいつでもバイトを実行できsend()
、recv()
データに制限はありません。
どのコンピュータもサーバーになることができます。386 ラップトップをサーバーとして使用し、真新しいデュアル Xeon ラック マシンをクライアントとして使用できます。