网络编程
文章平均质量分 77
nodeathphoenix
这个作者很懒,什么都没留下…
展开
-
TCP/IP协议 三次握手与四次握手
一、TCP报文格式 TCP/IP协议的详细信息参看《TCP/IP协议详解》三卷本。下面是TCP报文格式图:图1 TCP报文格式 上图中有几个字段需要重点介绍下: (1)序号:Seq序号,占32位,用来标识从TCP源端向目的端发送的字节流,发起方发送数据时对此进行标记。 (2)确认序号:Ack序号,占32位,只有AC转载 2013-10-15 21:51:21 · 1406 阅读 · 0 评论 -
IO之阻塞与非阻塞比较
在网络程序中遇到的一些问题进行了总结, 这里主要针对的是我们常用的TCP socket相关的总结, 可能会存在错误, 有任何问题欢迎大家提出.对于网络编程的更多详细说明建议参考下面的书籍《UNIX网络编程》 《TCP/IP 详解》 《Unix环境高级编程》非阻塞IO和阻塞IO:在网络编程中对于一个网络句柄会遇到阻塞IO和非阻塞IO的概念, 这里对于这两种socket先做一下说明转载 2014-06-13 01:08:07 · 4095 阅读 · 0 评论 -
recv返回值----任意长度的可读的数据
#include #include #include #include #include #include #include using namespace std;原创 2014-06-17 17:10:20 · 3012 阅读 · 1 评论 -
再议字节序-------TCP/IP网络传输相关字节序
对于网络这一块的字节序,说实话,理解不够深,在网上学些了下,先整理点,以后继续完善。实际上如果是应用层的数据,即对TCP/IP来说是透明的数据,不用考虑字节序的问题。因为接收端收到的顺序是和发送端一致的。但对于TCP/IP关心的数据(IP地址、端口)来说就不一样了。例如我指定了一个端口号:unsigned short port = 0x0012 (十进制18)把这原创 2013-11-02 14:15:34 · 5899 阅读 · 0 评论 -
高性能网络编程3----TCP消息的接收
这篇文章将试图说明应用程序如何接收网络上发送过来的TCP消息流,由于篇幅所限,暂时忽略ACK报文的回复和接收窗口的滑动。为了快速掌握本文所要表达的思想,我们可以带着以下问题阅读:1、应用程序调用read、recv等方法时,socket套接字可以设置为阻塞或者非阻塞,这两种方式是如何工作的?2、若socket为默认的阻塞套接字,此时recv方法传入的len参数,是表示必须超时(SO_RC转载 2014-06-17 12:36:19 · 1074 阅读 · 0 评论 -
Linux网络编程:TCP服务器(单进程多用户),使用select方法实现
Linux下的单进程多用户TCP服务器,采用select方法实现。[cpp] view plaincopy/************************************************* * File name : server.c * Description : 单进程并发服务器 * Author : sg131971@qq.co转载 2013-08-28 16:26:58 · 1671 阅读 · 0 评论 -
阻塞状态的recv返回值
recv是socket编程中最常用的函数之一,在阻塞状态的recv有时候会返回不同的值,而对于错误值也有相应的错误码,分别对应不同的状态,下面是我针对常见的几种网络状态的简单总结。 首先阻塞接收的recv有时候会返回0,这仅在socket被正常关闭时才会发生。 而当拔掉设备网线的时候,recv并不会发生变化,仍然阻塞,如果在这个拔网线阶段,socket被关掉了,后果可能转载 2014-06-13 02:13:57 · 8897 阅读 · 0 评论 -
TCP之深入浅出send和recv
本篇我们用一个测试机上的阻塞socket实例来说明主题。文章中所有图都是在测试系统上现截取的。需要理解的3个概念1. TCP socket的buffer每个TCP socket在内核中都有一个发送缓冲区和一个接收缓冲区,TCP的全双工的工作模式以及TCP的流量(拥塞)控制便是依赖于这两个独立的buffer以及buffer的填充状态。接收缓冲区把数据缓存入内核,应用进程一直没转载 2014-06-11 15:26:59 · 9961 阅读 · 0 评论 -
FIFO阻塞式的打开和读写,管道阻塞式的读写
最近看网络编程卷2时,对其中的图4-21表格的内容感觉翻译得比较生涩,这里自己通过程序验证后重新用自己的语言组织了一下。一、对于FIFO,需要open去打开FIFO的读端或是写端的描述符。1> 如果open的时候没有指定O_NONBLOCK标志,且open的是读端时 如果不存在此FIFO的已经打开的写端时,open会一直阻塞到有FIFO的写端打开; 如果已经存在此FIF原创 2014-04-10 15:28:02 · 6456 阅读 · 0 评论 -
linux 管道读写规则
一,管道读写规则当没有数据可读时O_NONBLOCK disable:read调用阻塞,即进程暂停执行,一直等到有数据来到为止。O_NONBLOCK enable:read调用返回-1,errno值为EAGAIN。当管道满的时候O_NONBLOCK disable: write调用阻塞,直到有进程读走数据O_NONBLOCK enable:调用返回-1,errno值为EAG转载 2014-04-09 17:26:15 · 16706 阅读 · 1 评论 -
unix网络编程卷2的头文件unpipc.h下载和编译(转)
http://blog.chinaunix.net/uid-27164517-id-3320677.html1. 编译原书所带例子: unpv22e.tar.gz 下载地址:http://www.kohala.com/start/unpv22e/unpv22e.tar.gz 2. 解压: $tar -zxvf unpv22e.tar.gz 3. 编译:转载 2014-04-08 16:48:16 · 4241 阅读 · 3 评论 -
HTTP协议
HTTPHTTP是Hyper Text Transfer Protocol,超文本传输协议;当我们想浏览一个网站的时候,只要在浏览器的地址栏里输入网站的地址就可以了,例如http://www.microsoft.com,但是在浏览...w.microsoft.com ,你知道为什么会多出一个“http”吗?(1)HTTP协议是什么我们在浏览器的地址栏里输入的网站地址叫做转载 2016-10-13 18:13:59 · 1219 阅读 · 0 评论