c++ socket基于TCP

linux网络编程基础api

  1. socket 地址api:ip地址和端口对,成为 soccket 地址。

  2. socket 基础api: sys/socket.h 中,包括创建、命名、监听 socket ;接受连接、发起连接、读写数据、获取地址信息、检测带外标记、读取设置 socket 选项

  3. 网络信息api:主机名和ip地址之间的转换、服务名称和端口号之间的转换。 netdb.h 中。

socket通信过程

  1. server端
    创建socket()->绑定地址和端口bind()->监听连接listen()->接受连接accept()->发送数据send()->关闭socket close()
  2. client
    创建socket()->IP地址转换inet_pton()->连接到服务端connect()->接收数据read()->关闭socket close()
  • TCP:可靠传输,三次握手建立连接,传出去一定接受的到(如聊天软件);

  • UDP:不可靠传输,不需要建立连接,只管发送,实时性好(如视频会议);

  • 套接字:表示通信的端点。就像用电话通信,套接字相当于电话,IP地址相当于总机号码,而端口号则相当于分机号码。

TCP:

 UDP:

socket地址

  1. 协议族和地址
    +=========+=========+==============+
    |     协议族     |     地址族    |          描   述          |
    +=========+=========+==============+
    |  PF_UNIX   |  AF_UNIX   |UNIX本地域协议族|
    +=========+=========+==============+
    |  PF_INET    |   AF_INET   |  TCP/IPv4协议族  |
    +=========+=========+==============+
    |  PF_INET6  |  AF_INET6 |  TCP/IPv6协议族   |
    +=========+=========+==============+

  2. tcp/ip 协议族有 sockaddr_in  和 sockaddr_in6两个专用socket地址结构体,分别用于ipv4和ipv6

// TCP/IPv4协议族
struct sockaddr_in {
    sa_family_t sin_family; /* 地址族 */
 
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值