网络编程时需要注意的情况

  在TCP客户和服务器彼此可以通信之前,每一端都应指定连接的套接字对;本地IP地址、本地端口号、外地IP地址、外地端口号。如下图:

外地IP地址和外地端口号必须在客户调用connect时指定。而两个本地值通常都由内核作为connect的一部分来选定。客户也可以在connect之前,通过调用bind来指定其中的一个或全部数值。但做饭并不常见。客户可以在连接建立后调用getsockname获取由内核指定的两个本地值。

 

  本地端口(服务器众所周知端口)由bind指定。bind调用中服务器指定的本地IP地址通常是通配IP地址。如果服务器在一个多宿主机上绑定通配IP地址,那么它可以在连接建立后通过调用getsockname来确定本地IP地址。两个外地值则有accept调用返回给服务器。如果另外一个程序由调用accept的服务器通过调用exec来执行,那么这个新程序可以在必要时调用getpeername来确定客户端的IP地址和端口号。

 

 

网络编程时,需要注意的三种情况:
1、当调用fork产生子进程时,必须捕捉SIGCHLD信号。
2、当捕捉信号时,必须处理被中断的系统调用。例如调用accept时,判断在返回值为-1并且errno被设置为EINTR的情况下,要重新启用accept。
3、SIGCHLD的信号处理函数必须正确编写,使用waitpid函数避免留下僵尸进程。

 

转载于:https://www.cnblogs.com/rabbit0212/p/11162800.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值