网络编程(四)

1. 掌握并发服务器
多路复用是假的并发(本质上是串行处理),多进程或多线程实现才叫并发
服务器创建子进程去处理用户业务
并发服务器:适用于用户请求需要长时间解决完的情境
注意:子进程只处理用户业务,所以关闭监听套接字
父进程只接受新的连接,所以关闭链接套接字
父进程还要回收子进程尸体
服务器创建子线程去处理用户业务



2.掌握套接字选项的获取或设置,比如下面两行,设置地址可重用
int on = 1;
setsockopt(sock_fd,SOL_SOCKET,SO_REUSEADDR,&on,sizeof(on));
    

3.掌握可重入函数的基本概念
可重入函数:运行时被信号打断,信号处理函数执行完成,之后可以接着运行,可以保护现场恢复现场(相当于可中断)
不可重入函数:

4. 广播跟单播的不同:


广播服务器不停往固定的广播地址和固定端口发消息
数据链路层封装的目的MAC地址为全1


   了解组播:
   服务器封装数据报套接字地址结构,加入组播地址
   客户端需要加入组播组


5.掌握INADDR_ANY :对应本机上的任一个IP地址

struct sockaddr_in server_addr;
server_addr.sin_family = AF_INET;
server_addr.sin_port = htons(10000);
server_addr.sin_addr.s_addr = htonl(INADDR_ANY);


练习

1.  用线程实现并发服务器


void * 类属指针,传给void *不需要强转为void *类型
潜在bug:主线程,子线程不一定子线程先运行运行
主线程运行快了会覆盖一个connect_fd

2. 使用套接字选项,查询套接字的接收缓冲区有多大?


3. 写出广播客户端和服务器代码
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值