C语言的学习续

这两天总结写了一个LinuxC下面的多进程socket通信的交互程序,收获良多。特别是对fork进程复制函数有了进一步的了解。同时对socket的处理有了更好掌握:

服务器端

socket  初始化

bind     与地址的绑定 用到 sockaddr_in

listen   监听

建立一个死循环

accept 接收一个请求

fork     复制一个进程

       子进程 返回值0

             再次 fork  创建子进程的子进程

             返回非零是父进程 推出 exit

             孙子进程处理任务(因为其主进程以及死亡,所以其进程有Init接管)

 

主进程waitpid   主进程的子进程很快结束退出,而接管他的子孙进程已经脱离主进程非init进程托管

 

 

 

最后处理善后的接管释放等动作

 

客服端比较简单

 

直接

socket 初始化

sockaddr_in 初始化

connect 连接实现绑定

 

write 请求

read  请求

 

有一个问题在socket通信的过程中read 和 write 最好指定读取的数据实际长度,否则可能会出现异常:

1、太短  数据没读取全

2、太长 会使得一直在请求 知道timeout在断开

 

还有个问题就是write 和 read 并不一定会真实的返回你指定的写或者读的数据长度,需要循环去处理他。

完毕,下午又要搞PHP一会儿,无聊……

 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值