UNIX环境高级编程——TCP/IP网络编程   常用网络信息检索函数 gethostname()   getppername()   getsockname()   gethostbyname()   gethostbyaddr()   getprotobyname()   getprotobynumber()   getservbyname()   getservbyport() 网络属性设置 头文件: #include <sys/types.h> #include <sys/soc…
常用网络信息检索函数 gethostname() getppername() getsockname() gethostbyname() gethostbyaddr() getprotobyname() getprotobynumber() getservbyname() getservbyport() 网络属性设置 头文件: #include <sys/types.h> #include <sys/socket.h>  获取一个套接口选项 int getsockopt(     …
概述 网络编程实际上就是编写程序使两台联网的计算机相互的交换数据.操作系统会提供名为“ 套接字 ”的部件.套接字是网络数据传输的软件设备,即使对网络数据传输原理不太熟悉也无关紧要.我们也能通过套接字完成数据传输,因此网络编程又叫套接字编程. 过程  我们可以把套接字理解为我们平时的电话机,我们先看一下套接字的创建过程: 首先你如果要和别人沟通肯定要安装好电话机才可以,所以对应套接字的是调用socket函数时进行对话. #include<sys/socket.h> int socket(int…
我认为,想要熟练掌握Linux下的TCP/IP网络编程,至少有三个层面的知识需要熟悉: 1. TCP/IP协议(如连接的建立和终止.重传和确认.滑动窗口和拥塞控制等等) 2. Socket I/O系统调用(重点如read/write),这是TCP/IP协议在应用层表现出来的行为. 3. 编写Performant, Scalable的服务器程序.包括多线程.IO Multiplexing.非阻塞.异步等各种技术. 关于TCP/IP协议,建议参考Richard Stevens的<TCP/IP Ill…
TCP/IP网络编程系列之三-地址族与数据序列 分配给套接字的IP地址和端口 IP是Internet Protocol (网络协议)的简写,是为首发网络数据而分配给计算机的值.端口号并非赋予计算机值,而是为了区分程序中创建的套接字而分配给套接字的序号. 网络地址 网络地址分为IPV4和IPV6,分别你别为4个字节地址簇和6个字节地址簇.IPV4标准的4个字节的地址分为网络地址和主机地址,且分为A.B.C.D.E 等类型.一般很少用到E类型.如下图所示:net-id指网络ID,host-id指主机…
套接字类型与协议设置 我们先了解一下创建套接字的那个函数 int socket(int domain,int type,int protocol);成功时返回文件描述符,失败时返回-1.其中,domain是套接字使用中的协议族(Protocol Family)信息.type套接字类型里面的数据传输类型信息.protocol计算机通信中使用的协议信息. 协议族(Protocol Family) 协议族类型有: PE_INET IPV4 PE_INET6 IPV6 PF_LOCAL 本地通信的UNI…
多播 多播方式的数据传输是基于UDP完成的,因此,与UDP服务端/客户端的实现非常接近.区别在于,UDP数据传输以单一目标进行,而多播数据同时传递到加入(注册)特定组的大量主机.换言之,采用多播方式时,可以同时向多个主机传递数据 多播的数据传输方式及流量方面的优点: 多播服务端针对特定多播组,只发送一次数据 即使只发送一次数据,但该组内的所有客户端都会接收数据 多播组数可在IP地址范围内任意增加 加入特定组即可接收发往该多播组的数据 多播组是D类IP(224.0.0.0~239.255.255.…
信号处理 本章接上一章TCP/IP网络编程之多进程服务端(一),在上一章中,我们介绍了进程的创建和销毁,以及如何销毁僵尸进程.前面我们讲过,waitpid是非阻塞等待子进程销毁的函数,但有一个不好的缺点就是要每隔一段时间判断子进程是否销毁,只有销毁完后才能执行父进程接下去的程序.这样显然会造成父进程一些资源上的浪费,那么有没有又可以销毁子进程,又不用让父进程等待的解决方案呢?答案当然是有的 子进程终止的识别主体是操作系统,因此,若操作系统能主动告诉通知正忙于执行程序的父进程说,子进程已经终止了,…
套接字与协议 如果相隔很远的两人要进行通话,必须先决定对话方式.如果一方使用电话,另一方也必须使用电话,而不是书信.可以说,电话就是两人对话的协议.协议是对话中使用的通信规则,扩展到计算机领域可整理为“计算机间对话必备通信规则” 在TCP/IP网络编程之网络编程和套接字这一章中,我们已经介绍了如何创建套接字,但为了完全理解该函数,此处将继续展开讨论 #include <sys/socket.h> int socket(int domain, int type, int protocol); d…
本篇文章主要介绍了套接字的几个常用配置选项,包括SO_SNDBUF & SO_RCVBUF.SO_REUSEADDR及TCP_NODELAY等. 套接字可选项和I/O缓冲大小 前文关于套接字的描述仅仅是使用其默认套接字特性来进行数据通信,这对于简单的使用场景来说似乎是可以的,然而实际工作场景中的确需要配置相关套接字选项来满足一些特殊需求.下图所示是一些常用的套接字可选配置选项. 一些常用套接字可配置选项 从图中可以看出,套接字可选项是分层的.IPPROTO_IP层可选项是IP协议相关事项,IPP…