2016-04-22 8 views
0

Was ist der Unterschied zwischen einer Verbindung mit TCP-Sockets (Sockstream) und UDP-Sockets (Datagramm). Bis jetzt denke ich wie können wir eine Verbindung erstellen, die Verbindungsfunktion nur für TCP-Sockets verwendet. Es ist jedoch möglich, eine Verbindung mit UDP-Sockets herzustellen. Bis jetzt wusste ich nichts über eine Verbindung mit UDP-Sockets. Was ist der Unterschied zwischen diesen beiden?Unterschied zwischen TCP- und UDP-Sockets

 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 ist verbindungslos. Also, wenn wir UDP verwenden, wie ist es möglich, eine TCP ähnliche Verbindung herzustellen?

Ich kenne bereits den Unterschied zwischen TCP und UDP. Mein Zweifel ist, UDP ist verbindungslos dann wie connect-Funktion Erfolg zurückgibt?

+1

Warum die C- und C++ - Tags vorhanden sind? –

+5

Haben Sie versucht, ["Unterschied zwischen TCP und UDP"] (http://google.com/search?q=difference+zwischen+tcp+und+udp) in Google einzugeben und dann einige der Ergebnisse zu lesen? – Andrew

+1

_ "Bis jetzt denke ich, dass wir eine Verbindung mit der Verbindungsfunktion nur für TCP-Sockets erstellen können." _ Nun, das ist, weil das TCP-Protokoll dies erfordert. Das UDP-Protokoll ist verbindungslos. –

Antwort

1

Die connect() Funktion in UDP (a) teilt UDP wo alle Datagramme zu senden, so dass Sie send() statt sendto() verwenden können, und (b) dient als Filter für eingehende Datagramme, so dass Sie recv() statt recvfrom() verwenden können. Es macht nichts im Netzwerk: Es ist nur eine lokale Operation. Es gibt immer Null zurück, weil es nicht fehlschlagen kann. Das Senden an ein nicht vorhandenes Ziel kann jedoch fehlschlagen ...

Es ist alles dokumentiert.

Verwandte Themen