当前位置: 技术问答>linux和unix
谁告诉我一个简单的并发TCP服务器中,如何进行大包处理?在线等ing
来源: 互联网 发布时间:2015-04-13
本文导语: 我想实现一个简单的并发TCP服务器模型。现在有两个问题要问: 1。关于并发的实现方式,我用线程和进程都想实现一下,但是不知道在用多进程实现时后怎么处理僵进程 int main() { ... socket(...); ... bind(...); ...
我想实现一个简单的并发TCP服务器模型。现在有两个问题要问:
1。关于并发的实现方式,我用线程和进程都想实现一下,但是不知道在用多进程实现时后怎么处理僵进程
int main()
{
...
socket(...);
...
bind(...);
listen(..);
while(1)
{
tmpsock=accept(...);
if((pid=fork())==0)
{
接收并处理大包
close(tmpsock);
exit(0);
}
}
}
在这种情况下,子进程处理完大包后退出后变成僵进程,但是父进程还需要不断监听,又不能够用wait来等待,似乎这样就没有了并发的意义了。请问如何收集这些僵尸进程。
这是第一个问题。
第二个问题是,不管用多线程还是多进程的并发服务器时,在处理大包的时候,应该怎么处理 啊。
比如说客户发了几兆的数据,而我开的缓冲只有几k,那么如何分步骤的读取和写入呢??
还有,就是一个socket每次到底可以写入多少数据最多。小弟这方面是新手,请高手指点,最好详细一点。分数不够可以加。谢谢!!!
1。关于并发的实现方式,我用线程和进程都想实现一下,但是不知道在用多进程实现时后怎么处理僵进程
int main()
{
...
socket(...);
...
bind(...);
listen(..);
while(1)
{
tmpsock=accept(...);
if((pid=fork())==0)
{
接收并处理大包
close(tmpsock);
exit(0);
}
}
}
在这种情况下,子进程处理完大包后退出后变成僵进程,但是父进程还需要不断监听,又不能够用wait来等待,似乎这样就没有了并发的意义了。请问如何收集这些僵尸进程。
这是第一个问题。
第二个问题是,不管用多线程还是多进程的并发服务器时,在处理大包的时候,应该怎么处理 啊。
比如说客户发了几兆的数据,而我开的缓冲只有几k,那么如何分步骤的读取和写入呢??
还有,就是一个socket每次到底可以写入多少数据最多。小弟这方面是新手,请高手指点,最好详细一点。分数不够可以加。谢谢!!!
|
1、父进程接收SIGCHLD信号,在信号处理函数里用wait。
2、TCP是可靠的流传输,用阻塞方式,只管写和读就可以了。如果写入太多,write会阻塞。
2、TCP是可靠的流传输,用阻塞方式,只管写和读就可以了。如果写入太多,write会阻塞。
您可能感兴趣的文章:
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。