sockert组成部分_基础知识之BSD socket

基础知识之 BSD Socket

Socket 通常也称作"套接字",是支持 TCP/IP 协议的网络通信应用的基本操作单元,可以用来实现网间不同虚拟机或不同计算机之间的通信。使用TCP/IP协议的应用程序通过在客户端和服务器各自创建一个 Socket ,然后通过操作各自的 Socket 就可以完成客户端和服务器的连接以及数据传输的任务了。

Socket 的本质是编程接口( API ),是对 TCP/IP 的封装。使开发者不需要面对复杂的 TCP/IP 协议族,只需要调用几个较简单的 Socket API 就可以完成网络通信了。

RT-Thread 中的 SAL 抽象层 提供完整的 BSD Socket 相关 API。

BSD Socket 相关 API

名称

作用

socket

创建一个 socket 套接字

bind

将端口号和 IP 地址绑定带指定套接字上

listen

开始监听

accept

接受连接请求

connect

建立连接

send

面向连接的发送数据(tcp)

recv

面向连接的接收数据(tcp)

sendto

无连接的发送数据(udp)

recvfrom

无连接的接收数据(udp)

closesocket

关闭 socket

shutdown

按设置关闭套接字

gethostbyname

通过域名获取主机的 IP 地址等信息

getsockname

获取本地主机的信息

getpeername

获取连接的远程主机的信息

ioctlsocket

设置套接字控制模式

TCP/UDP

要学用套接字编程,一定要了解 TCP/UDP 协议。TCP/UDP 协议工作在 TPC/IP 协议栈的传输层,如下图所示:

TCP(Transmission Control Protocol 传输控制协议)是一种面向连接的协议,使用该协议时,可以保证客户端和服务端的连接是可靠和安全的。使用 TCP 协议进行通信之前,通信双方必须先建立连接,然后再进行数据传输,通信结束后终止连接。

优点:能保证可靠性、稳定性。

适用场景:TCP适合用于端到端的通信,适用于对可靠性要求较高的服务。

基于 TCP 的 socket 编程流程如下图所示:

UDP(User Datagram Protocol 用户数据报协议)是一种非面向连接的协议,它不能保证网络连接的可靠性。 客户端发送数据之前并不会去服务器建立连接,而是直接将数据打包发送出去。当服务器接收数据时它也不向发送方提供确认信息,如果出现丢失包或重份包的情况,也不会向发送方发出差错报文。

优点:控制选项少,无须建立连接,从而使得数据传输过程中的延迟小、数据传输效率高。

适用场景:UDP适合对可靠性不高,或网络质量有保障,或对实时性要求较高的应用程序。

基于 UDP 的 socket 编程流程如下图所示:

API 详解

socket

使用 socket 通信之前,通信双方都需要各自建立一个 socket。我们通过调用 socket 函数来创建一个 socket 套接字:

int socket(int domain, int type, int protocol)

函数参数

参数

描述

domain

协议域

type

类型

protocol

传输协议

返回

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值