
网络编程
duola_rain
这个作者很懒,什么都没留下…
展开
-
SIOCGIFFLAGS, SIOCSIFFLAGS
SIOCGIFFLAGS, SIOCSIFFLAGS读取 或 设置 设备的 活动标志字. ifr_flags 包含 下列值 的 屏蔽位:设备标志IFF_UP接口正在运行.IFF_BROADCAST有效的广播地址集.IFF_DEBUG内部调试标志.IFF_LOOPBACK这是自环接口.IFF_PO转载 2013-07-23 15:08:09 · 2348 阅读 · 0 评论 -
Socket send函数和recv函数详解以及利用select()函数来进行指定时间的阻塞【转】
int send( SOCKET s, const char FAR *buf, int len, int flags ); 不论是客户还是服务器应用程序都用send函数来向TCP连接的另一端发送数据。客户程序一般用send函数向服务器发送请求,而服务器则通常用send函数来向客户程序发送应答。该函数的第一个参数指定发送端套接字描述符;转载 2013-11-04 10:33:52 · 1983 阅读 · 0 评论 -
网络编程设置时间超时
struct timeval tv; /* timeval and timeout stuff added by davekw7x */ int timeouts = 0; tv.tv_sec = 3; tv.tv_usec = 0; if (setsockopt(sockfd, SOL_SOCKET,原创 2013-11-04 16:17:32 · 958 阅读 · 0 评论 -
小试牛刀TCP 网络编程模式,单线程多路复用实例
//server.cstatic void Textsigchld(){ pid_t pid; int stat; while((pid = waitpid(-1, &stat, WNOHANG)) > 0) { fprintf(stderr," child %d terminated\n", pid); } return;}void init_Textsignals(void){struct s原创 2013-11-05 11:12:45 · 1005 阅读 · 0 评论 -
socket 请求接收完整的一个http响应(设置recv 接收超时选项SO_RCVTIMEO)
在前面的系列网络编程文章中,我们都是使用socket 自己实现客户端和服务器端来互相发数据测试,现在尝试使用socket 客户端发送http 请求给某个网站,然后接收网站的响应数据。http 协议参考 这里。代码如下: C++ Code 12345678910111213141516转载 2013-11-08 14:35:33 · 1330 阅读 · 2 评论 -
linux 一个简单的WEB服务器
以下程序经过测试使用,对简单的html和图片显示均有效://============================================================================// Name : netServers.cpp// Author :// Version :// Copyright : Your转载 2013-11-12 18:00:21 · 1866 阅读 · 0 评论 -
recv函数
recv函数 int recv( SOCKET s, char FAR *buf, int len, int flags); 不论是客户还是服务器应用程序都用recv函数从TCP连接的另一端接收数据。该函数的第一个参数指定接收端套接字描述符; 第二个参数指明一个缓冲区,该缓冲区用来存放recv函数接收到的数据; 第三个参数指明buf的长度; 第四个参数一般置0。 这里只描述同步S转载 2013-11-29 09:57:51 · 953 阅读 · 0 评论 -
ioctl和struct ifreq
转自:http://tech.sunplusedu.com/space/post-4064.aspx 用ioctl获得本地ip地址时要用到两个结构体ifconf和ifreq,它们对于大多数人来说都是比较陌生的,这里给大家一种比较简单的理解方法,当然只一种帮助理解的方法,在描述中可能会有一些地方与真实定义有所出入,仅供参考.首先先认识一下ifconf和ifreq:转载 2013-12-09 09:56:34 · 582 阅读 · 0 评论 -
Linux网络编程socket错误分析
都是网上整理的资料。贴在这里,以便查阅。Linux网络编程socket错误分析 socket错误码: EINTR: 4阻塞的操作被取消阻塞的调用打断。如设置了发送接收超时,就会遇到这种错误。只能针对阻塞模式的socket。读,写阻塞的socket时,-1返回,错误号为INTR。另外,如果出现EINTR即errno为4,错误描述Interrupted system cal转载 2013-12-02 10:44:50 · 971 阅读 · 0 评论 -
linux socket编程细节zz
Q: 编写 TCP/SOCK_STREAM 服务程序时,SO_REUSEADDR到底什么意思?A: 这个套接字选项通知内核,如果端口忙,但TCP状态位于 TIME_WAIT ,可以重用端口。如果端口忙,而TCP状态位于其他状态,重用端口时依旧得到一个错误信息,指明"地址已经使用中"。如果你的服务程序停止后想立即重启,而新套接字依旧使用同一端口,此时 SO_REUSEADDR 选项非常有用。转载 2013-12-05 10:05:10 · 708 阅读 · 0 评论 -
cgic: CGI的C函数库
下载回源码包以后,就3个文件:cgic.c 函数库capture.c 一个很简单的CGI例子,仅仅输出两行提示文字cgictest.c 一个演示读取form表单数据的CGI例子首先在vc6里创建一个空的win32静态库cgic,然后添加cgic.c,编译后得到cgic.lib库创建一个空的console工程cgictest,然后添加cgictest.c,在s转载 2014-07-24 13:35:51 · 916 阅读 · 0 评论 -
CGI学习
本系列的目的是演示如何使用C语言的CGI库“CGIC”完成Web开发的各种要求。********************************* 基础知识 1.使用CGIC的基本思路 2.获取Get请求字符串 3.反转义 4.获取请求中的参数值 进阶训练 5.用CGIC实现文件上传转载 2014-09-09 18:44:07 · 846 阅读 · 0 评论 -
使用select函数改进客户端/服务器端程序
一、当我们使用单进程单连接且使用readline修改后的客户端程序,去连接使用readline修改后的服务器端程序,会出现一个有趣的现象,先来看输出:先运行服务器端,再运行客户端,simba@ubuntu:~/Documents/code/linux_programming/UNP/socket$ ./echoser_recv_peek recv connect ip=127.0.0.转载 2013-11-04 10:58:16 · 3392 阅读 · 1 评论 -
BOA代码笔记 5
select_loop()继续,到了这里:[cpp] view plaincopyprint?if (!sigterm_flag && total_connections BOA_FD_SET(server_s, &block_read_fdset); /* server always set */转载 2013-10-30 10:21:19 · 789 阅读 · 0 评论 -
网络编程
一)Linux网络编程--网络知识介绍Linux网络编程--网络知识介绍客户端和服务端 网络程序和普通的程序有一个最大的区别是网络程序是由两个部分组成的--客户端和服务器端.客户端 在网络程序中,如果一个程序主动和外面的程序通信,那么我们把这个程序称为客户端程序。 比如我们使用ftp程序从另外一 个地方获取文件的时转载 2013-07-08 11:22:17 · 704 阅读 · 0 评论 -
网络编程属性设置EADDRINUSE
如下演示程序,程序目的是:先准备好一个ServerSocket,监听端口8880,然后建一个ClientSocket(受限于业务需要,必须在ServerSocket准备好后再建Client),也必须绑定同一端口8880,问题是:为什么对ClientSocket bind(port 8880)时,会报错EADDRINUSE?我已经启用了SO_REUSEADDR。为了方便于大家转载 2013-07-23 15:21:12 · 934 阅读 · 0 评论 -
简单的网络编程学习TCP/UDP
一.TCP网络通信原理图以及相关系统API函数应用服务器调用socket()、bind()、listen()完成初始化后,调用accept()阻塞等待,处于监听端口的状 态,客户端调用socket()初始化后,调用connect()发出SYN段并阻塞等待服务器应答,服务器应答 一个SYN-ACK段,客户端收到后从connect()返回,同时应答一个ACK段,服务器收到后 从ac原创 2013-06-03 13:32:28 · 641 阅读 · 0 评论 -
Linux 网络编程之ioctl函数
1.介绍Linux网络程序与内核交互的方法是通过ioctl来实现的,ioctl与网络协议栈进行交互,可得到网络接口的信息,网卡设备的映射属性和配置网络接口.并且还能够查看,修改,删除ARP高速缓存的信息,所以,我们有必要了解一下ioctl函数的具体实现.2.相关结构体与相关函数#include int ioctl(int d,int request,....);转载 2013-09-22 16:28:21 · 873 阅读 · 0 评论 -
FD_ISSET
FD_ZERO,FD_ISSET这些都是套节字结合操作宏 看看MSDN上的select函数, 这是在select io 模型中的核心,用来管理套节字IO的,避免出现无辜锁定. int select( int nfds,fd_set FAR *readfds, fd_set FAR *writefds,转载 2013-10-10 14:17:28 · 32551 阅读 · 0 评论 -
BOA代码笔记 1
开头废几句话Boa不多介绍了,wiki上说的比我好。之所以写这么个东西1 因为兴趣,想看看别人源代码。2 看linux0.11版源代码看到字符设备、文件系统的地方比较费劲,又不想跳过……憋了一肚子热情先发泄在boa上吧!3 正在做的某项目弄的博主头昏脑涨,不妨换换思路与Unix网络编程相关的,基于linux c编程,不涉及图形转载 2013-10-30 10:15:58 · 853 阅读 · 0 评论 -
BOA代码笔记 4
main.c (完?)从上次继续上次我们看到了这个地方:[cpp] view plaincopyprint?if (max_connections struct rlimit rl; /* has not been set explicitly */ c转载 2013-10-30 10:20:09 · 973 阅读 · 0 评论 -
BOA代码笔记 6
process_requests()昨天分析到了switch部分。process_requests()还剩下的,也就是处理请求的switch部分和处理retval的swtich部分。先看下剩下这部分的源码:[cpp] view plaincopyprint? switch (current->status) {转载 2013-10-30 10:25:06 · 732 阅读 · 0 评论 -
Linux TCP/IP编程之超时控制、多路复用和非阻塞
inux TCP/IP编程之超时控制、多路复用和非阻塞 在TCP连接中,recv等函数默认为阻塞模式(block),即直到有数据到来之前函数不会返回,而我们有时则需要一种超时机制使其在一定时间后返回而不管是否有数据到来,这里我们就会用到setsockopt()函数: int setsockopt(int s, int level, int optname, void* optv原创 2013-10-30 15:17:28 · 1047 阅读 · 0 评论 -
BOA代码笔记 2
boa.c 续书接上回。main函数的调用到了 fixup_server_root()[cpp] view plaincopyprint?static void fixup_server_root() { char *dirbuf; if (!server_root) { #ifde转载 2013-10-30 10:17:23 · 1136 阅读 · 0 评论 -
BOA代码笔记 3
up主下午没课,暂时也不知道学什么,所以继续继续~boa.c(依然续)main函数接下来该open_logs()了。顾名思义,这个函数负责日志文件的顺利打开。注释是这么说明的:/* * Name: open_logs * * Description: Opens access log, error log, and if specified, c转载 2013-10-30 10:18:53 · 968 阅读 · 0 评论 -
网络编程资料
https://community.emc.com/message/842879#842879原创 2014-10-13 18:02:08 · 502 阅读 · 0 评论