
大家都知道各类网络服务器程序的编写步骤,并且都知道网络服务器就两大类:循环服务和并发服务。这里附上源代码来个小结吧。 首先,循环网络服务器编程实现的步骤是这样的: 这种服务器模型是典型循环服务,如果不加上多进程/线程技术,此种服务吞吐量有限,大家都可以看到,如果前一个连接服务数据没有收发完毕后面的连接没办法处理。所以一般有多进程技术,对一个新连接启用一个新进程去处理,而监听socket继续监听。 /*****...
我用“Linux下各类tcp网络服务器的实现源代码”贴的循环tcp服务源代码以及测试客户端代码,可在编译服务器代码时,总提示我第12行:int sockfd,new_fd; 和第14行:struct sockaddr_in their_addr; 有错。 不知何种原因。请教各位高手,多谢!:em10:
我把《UNIX网络编程第一卷》的示例代码改了一点点想用于生产环境(AIX),但是还没有想好怎么样监控进程以达到在有较多客户端请求时能再产生新进程和在客户端请求减少时销毁空闲的进程。这个在书里只是提到了却没有给出示例代码。
[code]
#include
如果UDP和tcp的服务同时存在一个程序里面,都是守护进程等待连接,使用select实现, 那么bind第一个给tcp,然后bzero,再bind给UPD,可是我得到的bind返回值是-1,说明bind error,这个该怎么处理?难道一个网卡不能同时bind给两个fd?
最近在看tcp、ip协议详解,发现两个问题需要 1) 为什么在硬件中断接收到数据包后判断完广播或多播后,在ether_input中还要继续判断多播或广播标志信息呢? 2) ether_input中,根据包的类型,调度上层协议处理程序处理接收队列(如 ipintr ip包队列),可此时数据包还没加入相关队列,即 IF_ENQUEUE(ipintr,m)是最后被调用的? 这两个问题不明白,希望有人指点!!! [ 本帖最后由 xiaowhere 于 2009-4-9 13:55 编辑 ]
因工作需要,需要对tcp深入研究。但是,在网上找了很久没找到源代码! 如果在linux下看的话,源代码存放在哪里了? 恳请大家指点一下。多谢了。 [ 本帖最后由 finechore 于 2009-3-26 08:48 编辑 ]
看了Unix网络编程五、六章,小结一下,以备复习。 1,如果采用并发服务器形式,则需要处理子进程消亡后的僵死进程,即对SIGCHLD信号的处理。这里又涉及到wait和waitpid的选择问题,书中指出,wait并不足以防止出现僵死进程,我们应用采用: void sig_chid( int signo ) { pid_t pid; int stat; while ((pid=waitpid(-1, &stat, WNOHANG)) > 0 ) { printf( "child %d terminated\n", pi...
事情是这样D: 我现在测试一个LINUX芯片的并发能力,把它作为tcp服务器,接多客户端,从硬盘读数据然后向客户端发送,计算数据的传输能力。 现在用tcp多线程并发实现,但是测试结果很不理想。然后又作了一些测试,发现瓶颈是 由芯片的内存向tcp客户端写数据这一过程,而不是从硬盘读数据。 我现在应该做哪些工作,可以提高芯片的传输能力呢?
我用的是Fedora10,我想看tcp的代码实现(比如bind函数的实现),于是我在kernel的代码目录找(/usr/src/kernel),但是我只 在net.h中找到了tcp一些函数的声明,找不到他们的定义 /实现,哪位高手能否指点我哪个文件有bind的实现?谢谢,这个问题困扰来我2天了。以下是net.h: * * NET An implementation of the SOCKET network access protocol. * This is the master header file for the Linux...
请问各位路过得朋友能传一份BSD tcp/IP协议栈源代码给我吗,或留个可以等到此代码得方法,谢谢路过得朋友了。 [email]superliush@yahoo.com.cn[/email]