网络编程/

***问题一:***为什么不用pid来标识,而是用端口号呢?
因为pid每次都在发生改变,而端口号不会发生改变
***问题二:***既然mac地址可以唯一标识,还要用ip地址呢?
因为mac无法表示出物理地址的变换。
***问题三:***为什么要分层?
分层是为了使各层之间相互独立,各自有最适合自己的功能和方法实现。

网络编程的流程:
在这里插入图片描述
服务器端代码:
1.引入头文件
在这里插入图片描述
在这里插入图片描述
网络地址转换方法
头文件netinet/in.h,host to net short将十进制整数
转化为网络编码
2.在这里插入图片描述
创建套接字描述符
在这里插入图片描述
定义一个结构体,里面存放服务器端和客户端的地址,将来用于绑定,host to net short将十进制整数
转化为网络编码。 saddr.sin_addr.s_addr=inet_addr(xxx)//头文件arpa/inet.h自己设定的地址。
3.
在这里插入图片描述
绑定,将linux特有的sockaddr_in转化为通用的sockaddr结构体绑定在sockfd上。
并进行监听。
4.
在这里插入图片描述
step1:循环,可以重复输入,接收。
step2:当接收到一个消息时,定义一个新的描述符,将他绑定在套接字描述符上,后面都对这个c进行操作。(sockfd只相当于一个领路人,领完路后就回去继续领下一个人,而c才是真正对接你的人)
step3:接受描述符
step4:接收到buff中的数据。
客户端代码:
1.
在这里插入图片描述
2.
在这里插入图片描述
3.
在这里插入图片描述
前面和服务器端一样
之后发起链接
4.

在这里插入图片描述
从键盘上得到buff输入,发送给客户端,接收到反馈,关闭描述符。

运行结果:
在这里插入图片描述

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值