Linux系统编程之网络编程

网络套接字TCP/IP
OSI七层协议:
应用层
表示层
会话层
网络层
传输层
数据链路层
物理层

TCP/IP四层协议:
应用层
传输层
网络层
网络接口层


服务端流程:
1.创建套接字文件
int socket(int domain, int type, int protocol);
domain:协议域即协议族(IP协议):AF_INET - IPV4协议
Type:套接字类型: 流式 socket(SOCK_STREAM)---tcp 
Protocol:传输层协议,直接给0,当protocol(协议)为0时,会自动根据套接字类型来选传输层协议
2.绑定三要素:协议族、ip地址、端口号
int bind(int sockfd, const struct sockaddr *addr, socklen_t addrlen);

struct sockaddr_in {// man 7 ip才能看到
               sa_family_t    sin_family; /* address family地址族:我们这里用的是 AF_INET */
               in_port_t      sin_port;   /* port in network byte order 16bit端口号*/  ---  htons(); 
               struct in_addr  sin_addr;   /* internet address 32bitIP地址*/ inet_addr()
           };
   struct in_addr {
In_addr_t        s_addr; //32bit IPv4地址
}
3.设置监听数
int listen(int sockfd, int backlog);
4.等待连接
 int accept(int sockfd, struct sockaddr *addr, socklen_t *addrlen);
5.接收与发送
ssize_t send(int sockfd, const void *buf, size_t len, int flags);
ssize_t recv(int sockfd, void *buf, size_t len, int flags);
6.关闭套接字文件
close(sockfd)
客户端流程:
1.创建套接字文件

2.绑定三要素:协议族、ip地址、端口号(绑定服务端的)

3.请求连接
int connect(int sockfd, const struct sockaddr *addr, socklen_t addrlen);
4.接收与发送
ssize_t send(int sockfd, const void *buf, size_t len, int flags);
ssize_t recv(int sockfd, void *buf, size_t len, int flags);
5.关闭套接字文件
close(fd)

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBATGlsT25lMTIz,size_20,color_FFFFFF,t_70,g_se,x_16

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值