套接字 -- 7




概述有三种 IPC 被称为“XSI IPC”:消息队列信号量共享内存 他们之间有很多相似之处 标识符和键每个内核中的 IPC 结构(消息队列、信号量、共享内存)都用一个非负整数的标识符加以引用与文件描述符不同,IPC 标识符不是小的整数,当一个 IPC 结构被创建,与该结构相关的标识符连续加 1,直到达到整型最大数值,然后再从 0 开始加 由于标识符的数字难以使用和记忆,因此标识符仅被作为 IPC 对象的内部名,而“键”则是 IPC 对象的外部名供程序使用,键是 key_t 类型的数据,定义于 sys/type.h 中,通常为长整型外部调用使用键,由内核转化为标识符 但是,当客户进程与服务端进程通信的过程中,怎么保证“键”与标识符及 IPC 结构在服务端进程与客户进程之间会合呢?主要有下列方法:服务器进程可以指定键 IPC_PRIVATE 创建一个新的 IPC 结构(键 IPC_PRIVATE 保证服务器进程创建的 IPC 结构是一个新的结构),将返回的标识
#读书笔记    #技术帖    #龙潭书斋    #套接字   
函数简介fcntl 函数可执行各种描述符控制操作ioctl 函数则对 io 操作定义了各种控制操作小结fcntl、ioctl 和路由套接字操作小结操作fcntlioctl路由套接字POSIX规定首选方案设置套接字为非阻塞IO型F_SETFL, O_NONBLOCKFIONBIO fcntl设置套接字为信号驱动IO型F_SETFL, O_ASYNCFIOASYNC fcntl设置套接字属主F_SETOWNFIOCSPGRP 或 FIOSETOWN fcntl获取套接字属主F_GETOWNFIOCGPGRP 或 FIOGETOWN fcntl获取套接字接收缓冲区中的字节数 FIONREAD  测试套接字是否处于带外标志 SIOCATMARK sockatmark获取接口列表 SIOCGIFCONFsysctl 接口操作 SIOC[GS]IFxxx  ARP高速缓存操作 SIOCxARPRTM_xxx 路由表操作 SIOCxxxRTRTM_xxx 函数原型这里我们主要讨论 fcntlint fcntl(int fd, int cmd, ... /* arg */
#读书笔记    #技术帖    #linux    #unix   

200x200


〇、概述本文分别实现了最简单的基于C语言的TCP socket服务器与客户端程序,出于学习的目的,本文中的程序只是 unix 提供的系统调用进行了简单的封装,并进行了相应

#linux    #unix    #c++    #cpp   
只有一个进程的服务器是最简单的实现,被称为“迭代服务器”,但是一般的我们并不希望整个服务器被单个用户长期占用,而是希望同时服务多个用户,因此就需要并发服务器UNIX中编写并发服务器程序最简单的方法就是fork一个子进程来服务每个客户下面提供了并发服务器程序的框架:pid_t pid; int listenfd, connfd; listenfd = socket ( ... ); bind (listenfd, ... ); listen (listenfd, LISTENQ); for ( ; ; ) { connfd = accept (listenfd, ... ); if ( (pid = fork()) == 0 ) { close (listenfd); doit (connfd); close (connfd); exit (0); } close (connfd); } 当一个连接建立时,accept 返回,服务器接着调用 fork(关于 fork 函数的使用可以参看:创建子进程 -- fork、vfork,fork 与竞争条件和exec 函数 -- execl、execv、execle、execve、execlp、execvp),然后由子进程服务
#读书笔记    #技术帖    #tcp    #socket   

200x200


〇、基本的TCP客户/服务器程序的套接字函数 一、socketsocket 函数用来指定期望的通信协议类型int socket (int family, int type, int

#读书笔记    #技术帖    #linux    #unix   

200x200


〇、概述本章节主要介绍在套接字编程中常常需要使用的几个函数,关于TCP套接字编程中连接的建立和终止等需要用到的函数,可以参见:TCP连接的建立和终止和基本TCP套接字函数 一、字节排序函数对

#读书笔记    #技术帖    #c++    #cpp   

200x200


〇、概述IPv4 套接字地址结构通常也称为“网际套接字地址结构”,以 sockaddr_in 命名,定义在 <netinet/in.h> 

#技术帖    #linux    #unix    #ip   



京ICP备15018585号