赞
踩
在三路握手中,客户接收到三路握手的第二个分节时,connect函数返回,而服务器要直到接收到三路握手的第三个分节accept函数才返回(即connect返回之后再过一半RTT返回)。
使用命令:
%:ps -A -o pid,ppid,tty,stat,args,wchan
查看进程的各个属性。
网络编程中可能会遇到的问题:
1,用fork子进程时,必须捕获SIGCHLD信号。(否则可能会出现大连僵尸(zombie)进程,影响系统工作)
2,捕获信号时,有可能会中断某些系统调用。
3,SIGCHLD的额信号处理函数必须正确编写,应使用waitpid函数以免留下僵尸进程。
服务器进程终止:
客户发送数据到服务器(注意,此处是服务器,TCPf服务器,而不是服务器进程)时,之前连接的套接口的进程(服务器进程)已经终止,则服务器响应一个RST。
服务器主机崩溃:
客户发送数据不能到达服务器,则TCP会一直向服务器重传,或者中间某个路由器通过ICMP告诉客户机“主机不可达”(EHOSTUNREACH).
服务器主机崩溃后重启:
服务器主机崩溃后重启,则会失去所有之前的TCP连接信息。当客户的TCP数据到达服务器时,服务器回复一个RST。
Unix系统关机时,init进程通常先给所有进程发送SIGTERM信号(该信号可以被捕获),再等一段固定的时间(往往是5~20秒),然后给所有仍在运行的进程发送SIGKILL信号(该信号不能被捕获)。所以,想要在关机之前做一些事情(比如保存数据)的进程要捕获SIGTERM,并作出相应处理。
在网络中传送数据时,可能因为网络字节序跟主机字节序的不同而造成数据传输出错。需要注意。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。