网络编程
文章平均质量分 86
zhouzhenhe2008
这个作者很懒,什么都没留下…
展开
-
mini-httpd移植到ARM Linux及如何支持https
arm-nuvoton-linux-gnueabi-gcc是我的交叉工具链,需要提前设置一下环境变量或者你直接复制全路径。编辑mini-httpd配置文件mini-httpd.conf ,先仅支持http(文章后面讲https)(3)certfile=/etc/mini_httpd.pem //指定证书的位置。主页 https://acme.com/software/mini_httpd/将mini_httpd.pem拷贝到开发板的/etc/mini-httpd的Makefile很简单;原创 2024-09-08 22:51:30 · 1598 阅读 · 0 评论 -
CGI简介
CGI,即通用网关接口,属于一个Web服务器提供信息服务的标准接口。浏览器访问web服务器,web服务器可以通过CGI接口获取客户提交的信息,转交给服务器端CGI程序进行处理,最后返回结果给客户端。 CGI系统主要由浏览器的HTML页面已经在服务器上的CGI程序组成。整个通信的采用的是HTTP协议,因此,需要知道浏览器请求执行服务器上的哪个CGI程序就可以。 服务器原创 2017-08-16 11:10:30 · 605 阅读 · 0 评论 -
linux netstat命令简介
简介Netstat 命令用于显示各种网络相关信息,如网络连接,路由表,接口状态 (Interface Statistics),masquerade 连接,多播成员 (Multicast Memberships) 等等。输出信息含义执行netstat后,其输出结果为Active Internet connections (w/o servers)Proto Re转载 2017-08-16 13:09:40 · 308 阅读 · 0 评论 -
编写第一个CGI程序
1.首先确定自己的apache http服务器启动。服务器还没起来呢启动服务器2.编写cgi可执行文件#include int cgi_hello_world(){ std::cout<<"Content-type:text/html\r\n\r\n"; std::cout\n"; std::cout\n"; std::co原创 2017-08-16 14:49:29 · 1591 阅读 · 0 评论 -
获取CGI环境变量
1.CGI环境变量简介CGI程序继承了系统的环境变量,CGI的环境变量,在CGI程序在启动时初始化,结束时销毁,当一个CGI程序不是被HTTP服务器调用时,其环境变量基本是系统的环境变量。当属于HTTP服务器调用时,他的环境变量就会多了以下关于HTTP服务器、客户端、CGI传输过程等项目。CGI相关的环境变量有三种,与请求相关的环境变量、与服务器相关的环境变量,以及与客户端相关原创 2017-08-16 16:04:14 · 3950 阅读 · 0 评论 -
HTTP(1):Http协议简介
协议是指通信双方必须遵守的规则。HTTP(Hypertext Transfer Protocol,超文本传输协议)是一种详细规定了浏览器和web服务器之间互相通信的规则,通过因特网传送数据的传输协议。HTTP协议保证了浏览器可以更高效的运行,使网络传输效率更高,他不仅保证了计算机正确的快速传输超文本文档,还确定传输文档中的哪一部分内容首先显示(如文本先于图形)等。 HTTP由于其灵活、简单原创 2017-08-10 15:07:54 · 5885 阅读 · 0 评论 -
HTTP GET参数的获取
REQUEST_METHOD的值一般包括POST和GET两种GET参数的获取在GET方法下,CGI程序无法直接从服务器的标准输入中获取数据,因为服务器把从标准输入接收到的数据编码到环境变量QUERY_STRING(或PATH_INFO),采用GET方法时,只需把这些数据附加到URL的末尾,如http://192.168.1.211:8080/cgi-bin/222?s=1&b=3&u=0,原创 2017-08-17 21:36:25 · 3011 阅读 · 0 评论 -
HTTP协议结构
HTTP协议无论是请求报文还是回应报文,都分为以下4个部分。(1)报文头(initial line),比如访问百度的例子,”GEThttp://www.baidu.com/favicon.ico HTTP/1.1”表示用GET方法请求http://www.baidu.com/favicon.ico这个文件,用的是HTTP/1.1协议。(2)0个或者多个请求头(header line)原创 2017-08-11 16:36:13 · 720 阅读 · 0 评论 -
HTTP POST方法的学习
在POST方法下,CGI程序可以直接从服务器的标准输入中获取数据,不过要先从CONTENT_LENGTH这个环境变量中得到POST参数的长度,然后再读取相应长度的内容。先弄个post.html,并放到htdocs目录下。CGI POSTMethod:POOSTPlease input two number:*=代码如下:#inclu原创 2017-08-19 13:56:25 · 1816 阅读 · 0 评论 -
linux 端口号分配
端口号分配TCP和UDP采用16b的端口号来识别应用程序。那么这些端口号是如何选择的呢?服务器一般都是通过知名端口号来识别的。例如,对于TCP/IP实现来说,每个FTP服务器的TCP端口号都是21,每个Telnet服务器的TCP端口号都是23,每个TFTP(普通文件传输协议)服务器的UDP端口号都是69。任何TCP/IP实现所提供的服务都用知名的1~1 023之间的端口号。这些知名端口号由转载 2017-08-27 17:06:37 · 8666 阅读 · 0 评论 -
linux poll函数的使用
在网络编程中,Linux的poll函数跟select一样,可以处理多路复用。可以通过设置关注的描述符事件,灵活等待事件的到来。 #include int poll(struct pollfd *fds, nfds_t nfds, int timeout); (1)参数fds是pollfd结构体指针,可以指向一个结构体数组 struc原创 2017-07-22 21:49:49 · 12928 阅读 · 0 评论 -
inet_addr()和htonl()结合使用引发的connect()超时
Tcp通信使用的是网络字节序,所以一般都需要htonl()把ip地址转换成网络字节序,但如果ip已经是网络字节序了,再调用htonl就会导致不再是网络字节序了,引发严重后果,就是connect或者使用了一个相反的ip上代码服务端:#include #include #include #include /* See NOTES */#include #inclu原创 2017-07-19 10:35:37 · 3224 阅读 · 0 评论 -
TCP头部格式的了解
tcp头部格式如下图所示: 1.源端口号,16位,发送方的端口号。2.目标端口号,16位,发送方的目标端口号。3. 32为序列号,sequence number,保证网络传输数据的顺序性。4. 32位确认号,acknowledgment number,用来确认确实有收到相关封包,内容表示期望收到下一个报文的序列号,用来解决丢包的问题。原创 2017-05-02 13:41:43 · 8094 阅读 · 0 评论 -
七层网络体系或者五层网络体系
现在一般把计算机网络体系分为七层或者五层。先来说说七层1.七层网络体系 层数名字主要功能对应的典型设备传输单位7应用层提供应用程序间通信计算机:应用程序,如FTP,HTTP,SMTP程序级数据6表示层处原创 2017-04-23 16:44:54 · 1064 阅读 · 0 评论 -
网络通信的数据组装和解析
组装命令int combine_cmd(char *msg, int len){ if( NULL == msg ) { Log(DEBUG,"msg error"); return ERROR; } char name[]="zhang3"; char password[]="zhang3"; char ip[原创 2015-03-12 07:54:16 · 394 阅读 · 0 评论 -
一个简单的多进程服务器
/* server.c */#include #include #include #include #include #include #include #include #include #include #define MaxConnect 100#define MaxlistenNum 500 typedef st原创 2014-11-06 07:56:59 · 302 阅读 · 0 评论 -
基于套接字实现本地进程间的通信
客户端原创 2014-11-04 22:51:02 · 437 阅读 · 0 评论 -
简单的TCP客户-服务器
服务端原创 2014-10-31 23:08:51 · 304 阅读 · 0 评论 -
使用epoll模型
epoll模型可以说是select模型和poll模型的升级版,但epoll要求在linux内核版本2.6以上。相对于,select和poll来说,epoll更加灵活,没有描述符限制。相比于select和poll,epoll不会因为监听的描述符数目变多而导致轮询过多(耗时太多),不会因为fd的数目增大而降低响应效率。 另外,对于select的最大描述符,linux会有限制,在linux/原创 2017-07-29 19:46:09 · 437 阅读 · 0 评论 -
select的使用及缺陷
使用select多路复用模型,可以显著提高服务器的处理能力。select可以指定关心的描述符集以及关心这些描述符事件(可读、可写、异常),愿意等多久。 select函数的原型 /* According to POSIX.1-2001 */ #include /* According to earlier standar原创 2017-07-21 09:00:30 · 4101 阅读 · 0 评论 -
网络套接字编程基本api
网络层的IP可以惟一标识网络中的主机,而传输层的协议、端口这两个东西可以表示主机中的进程(也就是网络应用程序)。因此,通过IP、协议、端口号,可以标识网络的进程。 先说服务器这边吧(1)服务器根据地址的类型(属于ipv4还是ipv6等)、socket类型(比如TCP、UDP)去创建socket,创建出的套接字socket本质上也是个文件描述符。(2)服务器绑定IP地原创 2017-07-19 08:13:42 · 2714 阅读 · 0 评论 -
TCP三次握手和四次挥手的理解
TCP是面向连接的传输协议。这里所谓的连接,并不是网络上传输的连接,而是通信双方在维护着一个“连接状态”,看上去好像有连接一样。因此,去了解tcp的状态变换是蛮重要的,先理解下3次握手的过程。如下图客户端主动连接服务端。(1)第一次握手,客户端打开SYS_SENT,给服务器发送一个SYN连接,随机序列号为J,等待服务器确认,此时客户端为SYS_SENT状态。(2原创 2017-04-23 22:07:23 · 496 阅读 · 0 评论