TCP和UDP编程理解:bind ,recv,recvfrom,send,sendto

一:bind
   1:作为 客户端 ,调用  connect  ,那么这个  bind 函数 是为 了绑定 到都 固定 IP  和 端口 作为 自己 socket  地址。

2:作为服务器,调用  accept ,bind 是用来 绑定监听固定的 socket 地址数据,对于外来 socket,只有 来之对应 IP 并链接的 目标端口号才可以 链接本服务器。 

:TCP 和 UDP 通信收发函数区别(记住 soket中是否存放有IP 和端口信息,TCP有,UDP无,同时TCP服务器需要多个 socket 对象,对应多个连接)

1:TCP用send 和 recv :
这是因为每个 TCP都有一个连接,每次连接完成后,都会 把连接的信息记录在
socket 中,这样每次收发数据都 知道对方自己的  IP 地址还有 端口号,无需再次指定。 记录是发生在  accept 和 connect 调用完成后。
   1)connect 调用因为 只有一个socket 连接,就 记录在本地
   2)而 对于accept 由于有 多个连接,所以  accept 会返 回一个 socket 对象,对应一个TCP连接,记录对应的 IP和端口

2:UDP 利用 sendto() 和 recvfrom()
       1)recvfrom 会 返回发送端地址,这样 对服务器来说,由于时 UDP  socket 对象没有记录对应的IP和端口信息(记录也没有用, UDP不稳定随时可能变化),会需要用到改地址给客户端来发送响应。
      对于 客户端,由于每次 始终是知道服务器IP地址和端口( 和一个服务器交互 ,所以 无需记录(除非UDP客户端需要和多个服务器交互,需要一一记录,才能确保交互正确)

      2)sendto
       由于没有记录IP 和端口在 socket 对象中,所以 每次都需要 指定接受方地址
      无论是客户端和服务器都需要用


你可能感兴趣的:(网络编程学习笔记)