Toriyung

导航

TCP/UDP的一些区别

TCP

服务端创建TCP连接,其作用是监听并接受来自其他IP的连接请求

1. 创建套接字

socket();

  参数:1. 协议族,即IPV4还是IPV6;2. 套接字类型,有着比较更复杂的选择,但是一般就是根据选择TCP或UDP进行确定;3. 协议,可以选择TCP或UDP,一般使用0,其会通过前两个参数进行自动决定。

  返回:成功返回非-1,失败返回-1

2.  绑定套接字到IP和端口

bind()

  参数:1. 套接字;2. sockaddr类型的参数,当我们用IPV4时,会创建一个sockaddr_in类型的变量,然后对希望监听的ip和端口号进行设置,如协议族,ip,端口,空8位,最后再转化为sockaddr类型;3. sockaddr的结构体大小

  返回:成功返回非-1,失败返回-1

3. 开始监听

listen()

  参数:1. 套接字;2. 最大连接数

  返回:成功返回非-1,失败返回-1

4. 开始监听后,使用accept进行接受连接,在接收到请求之前持续堵塞

accept()

  参数:1. 套接字;2. sockaddr保存远程主机的信息;3. sockaddr结构体大小

  返回:成功返回和客户端通信的套接字,失败返回-1

5. 接收数据

recv()

  参数:1. 套接字(int *类型);2. 存储数据的缓存;3. 缓存大小

  返回:成功返回非-1,失败返回-1

6. 发送数据

send()

  参数:1. 通信对方的套接字;2. 发送数据的缓存;3. 缓存大小

  返回:成功返回非-1,失败返回-1

7. 关闭套接字

close()

  参数:套接字

  返回:成功返回非-1,失败返回-1

 

客户端创建TCP连接,其作用是发起对服务端的连接

1. 创建套接字

2. 发起连接

connect()

  参数:1. 套接字;2. 对象服务器的IP和端口信息sockaddr,这里和服务端一致;3. sockaddr结构体大小

  返回:成功返回非-1,失败返回-1

3. 发送/接收同服务端

 

UDP

UDP不存在服务端和客户端,因为本身不需要进行连接,而是直接发送和持续接收,所以每个进程要做的事是绑定自身IP和端口以及设置好目标进程的IP和端口

 

后面有空再补上代码例子

 

posted on 2023-06-14 16:34  Toriyung  阅读(10)  评论(0编辑  收藏  举报