2016-04-22 27 views
0

TCPソケット(sock_stream)とUDPソケット(データグラム)との接続の違いは何ですか?これまでのところ、私は のように、TCPソケット専用のconnect関数を使って接続を作成できると思います。しかし、UDPソケットとの接続が可能です。 これまではUDPソケットとの接続について知らなかった。これら2つの違いは何ですか?TCPソケットとUDPソケットの違い

 int tcpsock = socket(AF_INET, SOCK_STREAM, 0); 
     connect(tcpsock,(struct sockaddr*)&sa,sizeof(sa)); 

     int udpsock = socket(AF_INET, SOCK_DGRAM, 0); 
     connect(udpsock,(struct sockaddr*)&sa,sizeof(sa)); // How ? 

UDPはコネクションレスです。 UDPを使用すれば、TCPと同様の接続が可能ですか?

私はすでにTCPとUDPの違いについて知っています。私の疑いは、UDPは コネクションレスで、どのようにコネクション関数が成功を返すのですか? UDPで

+1

なぜCとC++タグがあるのですか? –

+5

["TCPとUDPの違い"](http://google.com/search?q=difference+between+tcp+and+udp)をGoogleに入力して試してみましたか? – Andrew

+1

_ "これまでは、tcpソケット専用のconnect関数を使って接続を作成できるように思っています。"というのは、TCPプロトコルが必要とするからです。 UDPプロトコルはコネクションレスです。 –

答えて

1

connect()機能は、(a)はどこにsend()代わりのsendto()を使用できるように、すべてのデータグラムを送信するUDPを伝え、(b)は、受信データグラムのフィルタとして機能するので、あなたがrecv()代わりのrecvfrom()を使用することができます。ネットワーク上では何もしません。それは単なるローカル操作です。それは失敗しないので常にゼロを返します。しかし、存在しないターゲットに送信すると失敗する可能性があります。

これはすべて文書化されています。