博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

04 2015 档案

摘要:这一节主要关注的还是粘包问题,我们利用recv实现一个recv_peek函数,它的目的是偷窥目的,它是利用recv的一个msg_peek参数与read的区别,read读取后会擦除缓冲区的内容,而recv结合msg_peek会读取的时候并不擦除缓冲区的内容,起到一个可以偷窥的目的,利用这个特性可以用r... 阅读全文

posted @ 2015-04-28 00:31 勇敢的鑫 阅读(127) 评论(0) 推荐(0) 编辑

摘要:tcp是基于字节流的,udp是基于报文即数据包的,所以tcp会产生一个叫做粘包的问题,而udp不会产生。我们这节主要讨论粘包问题:先看一下粘包问题的原因:总结如下:1、应用进程的缓冲区和Socket缓冲区的大小不一定相吻合。2、tcp传输段有mss限制。3、链路层有个mtu限制。粘包的解决方案:1、... 阅读全文

posted @ 2015-04-26 22:54 勇敢的鑫 阅读(144) 评论(0) 推荐(0) 编辑

摘要://需要目标名和程序名字相同.PHONY:clean all //伪目标CC=gccCFLAGS=-Wall -gBIN= //目标all:$(BIN)%.o:%.c $(CC) $(CFLAGS) -c $< -o $@clean: ... 阅读全文

posted @ 2015-04-26 22:41 勇敢的鑫 阅读(132) 评论(0) 推荐(0) 编辑

摘要:有个SO_REUSEADDR值得注意一下:服务器端尽可能使用SO_REUSEADDR在绑定之前尽可能调用setsockopt来设置SO_REUSEADDR套接字选项。使用SO_REUSEADDR选项可以使得不必等待TIME_WAIT状态消失就可以重启服务器。也就是如果你不这样子用的话会出现这样的问题... 阅读全文

posted @ 2015-04-12 23:28 勇敢的鑫 阅读(155) 评论(0) 推荐(0) 编辑

摘要:TCP客户/服务器模型:从图中就可以看出基本的过程来。回射客户/服务器:这个是回射的图示,客户端发给服务端,服务端在发回给客户端。socket函数:包含头文件功能:创建一个套接字用于通信原型int socket(int domain, int type, int protocol);参数domain... 阅读全文

posted @ 2015-04-12 18:19 勇敢的鑫 阅读(113) 评论(0) 推荐(0) 编辑

摘要:socket可以看成是用户进程与内核网络协议栈的编程接口。socket不仅可以用于本机的进程间通信,还可以用于网络上不同主机的进程间通信。IPv4套接口地址结构通常也称为“网际套接字地址结构”,它以“sockaddr_in”命名,定义在头文件中struct sockaddr_in { uint8_... 阅读全文

posted @ 2015-04-12 04:09 勇敢的鑫 阅读(156) 评论(0) 推荐(0) 编辑

摘要:ISO/OSI参考模型:OSI(open system interconnection)开放系统互联模型是由ISO(International Organization for Standardization)国际标准化组织定义的网络分层模型,共七层。各层具体作用详解:物理层(Physical La... 阅读全文

posted @ 2015-04-05 11:51 勇敢的鑫 阅读(138) 评论(0) 推荐(0) 编辑

摘要:这节是命名管道FIFO。如果我们想在不相关的进程之间交换数据,可以使用FIFO文件来做这项工作,它经常被称为命名管道。命名管道是一种特殊类型的文件创建:命名管道可以从命令行上创建,命令行方法是使用下面这个命令: $ mkfifo filename命名管道也可以从程序里创建,相关函数有: int mk... 阅读全文

posted @ 2015-04-05 01:00 勇敢的鑫 阅读(133) 评论(0) 推荐(0) 编辑

摘要:管道读写规则:当没有数据可读时O_NONBLOCK disable:read调用阻塞,即进程暂停执行,一直等到有数据来到为止。O_NONBLOCK enable:read调用返回-1,errno值为EAGAIN。当管道满的时候O_NONBLOCK disable: write调用阻塞,直到有进程读走... 阅读全文

posted @ 2015-04-05 00:35 勇敢的鑫 阅读(106) 评论(0) 推荐(0) 编辑

摘要:我们把从一个进程连接到另一个进程的一个数据流称为一个“管道”管道是半双工的,数据只能向一个方向流动;需要双方通信时,需要建立起两个管道只能用于具有共同祖先的进程(具有亲缘关系的进程)之间进行通信;通常,一个管道由一个进程创建,然后该进程调用fork,此后父、子进程之间就可应用该管道。pipe:匿名管... 阅读全文

posted @ 2015-04-04 15:30 勇敢的鑫 阅读(105) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示