随笔分类 -  网络编程

摘要:在Linux或者Unix操作系统中在系统引导的时候会开启很多服务,这些服务就叫做守护进程。 守护进程,也就是通常说的Daemon进程,是Linux中的后台服务进程。 它是一个生存期较长的进程,通常独立于控制终端并且周期性地执行某种任务或等待处理某些发生的事件。 守护进程常常在系统引导装入时启动,在系 阅读全文
posted @ 2016-05-09 20:47 LarryKnight 阅读(1091) 评论(0) 推荐(0)
摘要:域名系统(Domain Name System, DNS)主要用于主机名和IP地址之间的映射, 是一个分布式数据库,能够使人更方便的访问互联网,而不用去记住能够被机器直接读取的IP数串。 主机名既可是一个简单名字(如solaris),也可是一个全限定域名FQDN(如solaris.unpbook.c 阅读全文
posted @ 2016-05-09 14:27 LarryKnight 阅读(421) 评论(0) 推荐(0)
摘要:#include <sys/types.h>#include <sys/socket.h>函数原型:(创建一个套接口)int socket(int family, // 协议类型,一般为AF_INET int type, // socket类型:SOCK_STREAM、SOCK_DGRAM、SOCK 阅读全文
posted @ 2016-05-05 14:02 LarryKnight 阅读(333) 评论(0) 推荐(0)
摘要:UDP的connect没有三次握手过程,内核只是检测是否存在立即可知的错误(如一个显然不可达的目的地), 记录对端的的IP地址和端口号,然后立即返回调用进程。 未连接UDP套接字(unconnected UDP socket):新创建UDP套接字默认如此; 已连接UDP套接字(connected U 阅读全文
posted @ 2016-05-03 12:09 LarryKnight 阅读(3483) 评论(0) 推荐(0)
摘要:UDP (User Datagram Protocol,用户数据报协议), 是OSI(Open System Interconnection,开放式系统互联) 参考模型中一种无连接的传输层协议,提供面向事务的简单不可靠信息传送服务。 客户不与服务器建立连接,而是只管使用sendto函数给服务器发送数 阅读全文
posted @ 2016-04-30 11:35 LarryKnight 阅读(264) 评论(0) 推荐(0)
摘要:在linux的网络编程中,很长的时间都在使用select来做事件触发。在linux新的内核中,有了一种替换它的机制,就是epoll。 epoll是一种高效的管理socket的模型,相对于select和poll来说具有更高的效率和易用性。 相比于select,epoll最大的好处在于它不会随着监听fd 阅读全文
posted @ 2016-04-29 09:35 LarryKnight 阅读(195) 评论(0) 推荐(0)
摘要:select(),用于确定一个或多个套接口的状态,对每一个套接口,调用者可查询它的可读性、可写性及错误状态信息,用fd_set结构来表示一组等待检查的套接口,在调用返回时,这个结构存有满足一定条件的套接口组的子集,并且select()返回满足条件的套接口的数目。 该函数允许进程指示内核等待多个事件中 阅读全文
posted @ 2016-04-26 10:08 LarryKnight 阅读(316) 评论(0) 推荐(0)
摘要:Unix下共有五种I/O模型 1. 阻塞式I/O 2. 非阻塞式I/O 3. I/O复用(select和poll) 4. 信号驱动式I/O(SIGIO) 5. 异步I/O(POSIX的aio_系列函数) 1. 阻塞式I/O(blocking I/O):基本所有套接字都是阻塞的,下面以数据报套接字为例 阅读全文
posted @ 2016-04-24 23:31 LarryKnight 阅读(345) 评论(0) 推荐(0)
摘要:单进程和使用select的服务器程序 第一个客户建立连接前的服务器状态: 服务器只维护一个读描述符集时:描述符0、1和2分别被设置为标准输入、标准输出和标准错误输出,故监听套接字的第一个可用描述符是3。 描述符集中唯一的非0项是表示监听套接字的项,因此select的第一个参数将为4。 client整 阅读全文
posted @ 2016-04-24 21:15 LarryKnight 阅读(248) 评论(0) 推荐(0)
摘要:POSIX 表示可移植操作系统接口(Portable Operating System Interface ,缩写为 POSIX ),POSIX标准定义了操作系统应该为应用程序提供的接口标准,是IEEE为要在各种UNIX操作系统上运行的软件而定义的一系列API标准的总称,其正式称呼为IEEE 100 阅读全文
posted @ 2016-04-22 09:46 LarryKnight 阅读(755) 评论(0) 推荐(0)
摘要:#ifndef _I386_ERRNO_H #define _I386_ERRNO_H #define EPERM 1 /* Operation not permitted */ #define ENOENT 2 /* No such file or directory */ #define ESR 阅读全文
posted @ 2016-04-21 14:32 LarryKnight 阅读(202) 评论(0) 推荐(0)
摘要:int getsockname(int sockfd, struct sockaddr *localaddr, socklen_t *addrlen); // 获取与某个套接字关联的本地协议地址 int getpeername(int sockfd, struct sockaddr *localad 阅读全文
posted @ 2016-04-20 17:36 LarryKnight 阅读(421) 评论(0) 推荐(0)
摘要:Unix中编写并发服务器最简单的办法是fork一个子进程来服务每个客户。 阅读全文
posted @ 2016-04-20 14:55 LarryKnight 阅读(147) 评论(0) 推荐(0)
摘要:进程是系统进行资源分配和调度的基本单位,包括代码、数据和PCB进程控制块等资源。 fork函数通过系统调用创建一个与原进程相同的子进程。 在调用进程(父进程)中返回一次,返回子进程ID;在子进程返回0。 父进程调用fork之前打开的所有描述符在fork返回之后由子进程分享。 网络服务器父进程调用ac 阅读全文
posted @ 2016-04-20 12:41 LarryKnight 阅读(172) 评论(0) 推荐(0)
摘要:str开头的函数:以空字符结尾的C字符串是由<string.h>头文件定义;如strcpy() strcmp() b开头的函数:表示字节,起源于4.2BSD;如bzero() bcopy() bcmp() mem开头的函数:表示内存, 起源于ANSI C标准。如memset() memcpy() m 阅读全文
posted @ 2016-04-18 22:32 LarryKnight 阅读(394) 评论(0) 推荐(0)
摘要:网络字节序通常为大端。 主机字节序和网络字节序相互转换:htons() htonl() ntohs() ntohl() 阅读全文
posted @ 2016-04-18 19:41 LarryKnight 阅读(155) 评论(0) 推荐(0)
摘要:TCP(Transmission Control Protocol 传输控制协议)是一种面向连接的、可靠的、基于字节流的传输层通信协议。 在因特网协议族中,TCP层是位于IP层之上,应用层之下的中间层。 不同主机的应用层之间经常需要可靠的、像管道一样的连接,但是IP层不提供这样的流机制,而是提供不可 阅读全文
posted @ 2016-04-17 20:48 LarryKnight 阅读(167) 评论(0) 推荐(0)
摘要:TCP(Transmission Control Protocol,传输控制协议)是面向连接的协议;可靠、保证正确性;顺序到达;流量控制、拥塞控制;重传机制、窗口机制;对系统资源、时间要求多;流模式SOCK_STREAM。服务器端:socket、bind、listen、accept、send、rec 阅读全文
posted @ 2016-04-17 20:07 LarryKnight 阅读(159) 评论(0) 推荐(0)
摘要:一、 三种类型的套接字:1.流式套接字(SOCKET_STREAM) 提供面向连接的可靠的数据传输服务。数据被看作是字节流,无长度限制。例如FTP协议就采用这种。2.数据报式套接字(SOCKET_DGRAM) 提供无连接的数据传输服务,不保证可靠性。3.原始式套接字(SOCKET_RAW) 该接口允 阅读全文
posted @ 2016-02-26 22:57 LarryKnight 阅读(6305) 评论(0) 推荐(2)