2009-06-15 8 views
1

私はUDPソケットクライアントをC(ユニキャスト)で作成していますが、recvfrom()がstruct sockaddr *引数を持っているのはなぜだろうか。マニュアルページでは、 はヌルポインタ、または送信を行うsockaddr構造体を指します。アドレスが格納される。UDP(ユニキャストクライアント)recvfrom()はsendto()以外の他のサーバーを使用できますか?

私はsendto以外の別のサーバーからメッセージを受け取ることは可能でしょうか?はいの場合、このシナリオを作成する方法は?

いいえ、この引数はブロードキャストモードを使用している場合にのみ有効であると言うのは正しいですか?

答えて

2

はい、これは完全に可能です。これは、UDPがストリームベースではなくパケットベースであるためです。すべてのパケットは、履歴なしで処理されます(送信または受信される他のパケット)。

このため、UDPポートを開いてから別のホストにパケットを送信することもできます。しかし、私はこれがAPIによってどの程度うまくサポートされているのか覚えていません。

-1

あなたは常にUDPで2人のパーティーを持っていると考えると、まず誰かがrecvfrom()をしなければならないことは明らかです。

0

UDPソケットはちょうどwrite()read()することができます。その場合には、あなたの明示的connect()ない限り、正しいポートで、この1に送信する任意のホストをrecvfrom()し、受信したICMPメッセージ時にエラーが発生します。

関連する問題