2016-04-22 3 views
0

В чем разница между подключением к сокетам TCP (sock_stream) и сокетам UDP (датаграмма). До сих пор я думаю, что мы можем создать соединение, используя функцию подключения только для сокетов TCP. Но можно установить соединение с сокетами UDP. До сих пор я не знал о подключении к сокетам UDP. В чем разница между этими двумя?Разница между сокетами 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 без установления соединения, то как функция соединения возвращает успех?

+1

Почему существуют теги C и C++? –

+5

Вы пытались ввести в Google [«разница между TCP и UDP»] (http://google.com/search?q=difference+between+tcp+and+udp), а затем прочитать некоторые результаты? – Andrew

+1

_ «До сих пор я думаю, что мы можем создать соединение, используя функцию подключения только для tcp-сокета». _ Ну, это потому, что это требует протокол TCP. Протокол UDP без установления соединения. –

ответ

1

connect() функция UDP (а) говорит UDP куда посылать все датаграммы, так что вы можете использовать send() вместо sendto(), и (б) действует как фильтр входящих дейтаграмм, так что вы можете использовать recv() вместо recvfrom(). Он ничего не делает в сети: это всего лишь локальная операция. Он всегда возвращает ноль, потому что он не может потерпеть неудачу. Однако отправка несуществующей цели может завершиться неудачно ...

Все это задокументировано.

Смежные вопросы