摘要:这一节主要关注的还是粘包问题,我们利用recv实现一个recv_peek函数,它的目的是偷窥目的,它是利用recv的一个msg_peek参数与read的区别,read读取后会擦除缓冲区的内容,而recv结合msg_peek会读取的时候并不擦除缓冲区的内容,起到一个可以偷窥的目的,利用这个特性可以用r...
阅读全文
posted @ 2015-04-28 00:31
随笔分类 - linux网络编程
摘要:这一节主要关注的还是粘包问题,我们利用recv实现一个recv_peek函数,它的目的是偷窥目的,它是利用recv的一个msg_peek参数与read的区别,read读取后会擦除缓冲区的内容,而recv结合msg_peek会读取的时候并不擦除缓冲区的内容,起到一个可以偷窥的目的,利用这个特性可以用r...
阅读全文
posted @ 2015-04-28 00:31
摘要:tcp是基于字节流的,udp是基于报文即数据包的,所以tcp会产生一个叫做粘包的问题,而udp不会产生。我们这节主要讨论粘包问题:先看一下粘包问题的原因:总结如下:1、应用进程的缓冲区和Socket缓冲区的大小不一定相吻合。2、tcp传输段有mss限制。3、链路层有个mtu限制。粘包的解决方案:1、...
阅读全文
posted @ 2015-04-26 22:54
摘要:有个SO_REUSEADDR值得注意一下:服务器端尽可能使用SO_REUSEADDR在绑定之前尽可能调用setsockopt来设置SO_REUSEADDR套接字选项。使用SO_REUSEADDR选项可以使得不必等待TIME_WAIT状态消失就可以重启服务器。也就是如果你不这样子用的话会出现这样的问题...
阅读全文
posted @ 2015-04-12 23:28
摘要:TCP客户/服务器模型:从图中就可以看出基本的过程来。回射客户/服务器:这个是回射的图示,客户端发给服务端,服务端在发回给客户端。socket函数:包含头文件功能:创建一个套接字用于通信原型int socket(int domain, int type, int protocol);参数domain...
阅读全文
posted @ 2015-04-12 18:19
摘要:socket可以看成是用户进程与内核网络协议栈的编程接口。socket不仅可以用于本机的进程间通信,还可以用于网络上不同主机的进程间通信。IPv4套接口地址结构通常也称为“网际套接字地址结构”,它以“sockaddr_in”命名,定义在头文件中struct sockaddr_in { uint8_...
阅读全文
posted @ 2015-04-12 04:09
摘要:ISO/OSI参考模型:OSI(open system interconnection)开放系统互联模型是由ISO(International Organization for Standardization)国际标准化组织定义的网络分层模型,共七层。各层具体作用详解:物理层(Physical La...
阅读全文
posted @ 2015-04-05 11:51
|
||