- 博客(21)
- 资源 (18)
- 收藏
- 关注
转载 WaitForMultipleObjects用法详解,一看就懂
WaitForMultipleObjects是Windows中的一个功能非常强大的函数,几乎可以等待Windows中的所有的内核对象函数原型为:DWORD WaitForMultipleObjects( DWORD nCount, // number of handles in the handle array CONST HANDLE *l
2017-11-30 16:20:55 416
转载 C++中_onexit()用法简述
引问:main 主函数执行完毕后,是否可能会再执行一段代码? 答案:可以,可以用_onexit 注册一个函数,它会在main 之后执行。知识了解:(1)使用格式:_onexit(int fun()) ,其中函数fun()必须是带有int类型返回值的无参数函数;(2)_onexit() 包含在头文件cstdlib中,cstdlib为c语言中的库函数;(3)无论函数_onexi
2017-11-30 15:50:26 1717
转载 _CrtSetDbgFlag
_CrtSetDbgFlag 若要了解有关 Visual Studio 2017 RC 的最新文档,请参阅 Visual Studio 2017 RC 文档。检索或修改的状态_crtDbgFlag标志来控制调试堆管理器 (仅限调试版本) 的分配行为。语法 int _CrtSetDbgFlag( int newFlag );
2017-11-30 15:43:15 1839
原创 第2章 Posix IPC
POSIX(Portable Operating System Interface)可移植操作系统接口,这样的简写完全是为了和UNIX读起来更像而已。IEEE开发了POSIX,在源码级别定义了一组UNIX操作系统接口。Glibc(GNU C Library),即C运行库,是Linux系统中最底层的API,它就是完全按照POSIX标准编写的。Posix 每个IPC对象是有名称的,而且名称是一个很重要的概念。mq_open sem_open shm_open三个函数的第一个参数就是这个名称,这个
2017-11-29 17:19:04 384
原创 第1章 简介
进程间通信(IPC,Inter-Process Communication),指至少两个进程或线程间传送数据或信号的一些技术或方法。进程是计算机系统分配资源的最小单位(严格说来是线程)。每个进程都有自己的一部分独立的系统资源,彼此是隔离的。为了能使不同的进程互相访问资源并进行协调工作,才有了进程间通信。举一个典型的例子,使用进程间通信的两个应用可以被分类为客户端和服务器,客户端进程请求数据,服务端回复客户端的数据请求。有一些应用本身既是服务器又是客户端,这在分布式计算中,时常可以见到。这些进程可以运行在同一
2017-11-29 14:35:36 306
原创 Brpc学习:简单回显服务器/客户端
百度内最常使用的工业级RPC框架, 有超过600,000个实例(不包含client)和500多种服务, 在百度内叫做"baidu-rpc". 目前只开源C++版本。你可以使用它: 搭建一个能在同端口支持多协议的服务, 或访问各种服务 restful http/https, h2/h2c (与grpc兼容, 即将开源). 使用brpc的http实现比libcurl方便多了。 redis和memcached, 线程安全,比官方client更方便。 r
2017-11-28 13:39:06 16798
原创 第16章 Sun RPC
RPC:远程过程调用默认情况下服务器并不多线程化rpcgen -C data.x -DDEBUG -Mgcc server.c data_svc.c data_xdr.c -o servergcc client.c data_clnt.c data_xdr.c -o client
2017-11-22 21:33:54 793
原创 第26章 线程
#include //线程int pthread_create(pthread_t *tid, const pthread_attr_t *attr, void *(*func)(void*), void *arg);int pthread_join(pthread_t *tid, void **status);pthread_t pthread_self(void);int pthr
2017-11-20 11:05:17 375
原创 第25章 信号驱动式I/O
(1)建立SIGIO信号的信号处理函数(2)设置套接字属主(3)开启套接字的信号驱动式I/O标志#include "../Gnet.h"int fd;void sig_io(int sig){ char buf[MAX_LINE]; int nread; struct sockaddr_in client_addr; socklen_t c
2017-11-17 17:29:49 722
原创 第21章 多播
1·多播(组播)地址:224.0.0.0~139.255.255.2552·发送多播数据报无需任何特殊处理,发送应用程序不必为此加入多播组3·多播相对于广播的优势在于不会对多播分组不感兴趣的主机增加额外负担#include "../Gnet.h"int main(int argc, const char* argv[]){ int sendfd, recvfd;
2017-11-17 09:30:29 412
原创 第20章 广播
1·广播和多播要求用于UDP或原始IP,它们不能用于TCP。2·单播IP数据报仅由通过目的IP地址指定的单个主机接收。3·广播分组去往子网上的所以主机,包括发送主机本身。4·(一般)除非显式告诉内核我们准备发送广播数据报,否则系统不允许我们这么做。 const int on = 1; setsockopt(sockfd, SOL_SOCKET, SO_BROAD
2017-11-16 09:46:33 384
原创 第17章 ioctl操作
/*/usr/src/linux-headers-4.10.0-35/include/uapi/linux/if.h*//* * INET An implementation of the TCP/IP protocol suite for the LINUX * operating system. INET is implemented using the BSD Socket
2017-11-15 15:33:58 885
原创 第16章 非阻塞式I/O
执行时间: 停等版本(完全阻塞) 》 select加阻塞I/O版本 》 fork多进程版本(Linux下多线程也应该差不多) 》 非阻塞I/O版本非阻塞读写#include "../Gnet.h"void do_client(int connfd){ char to[MAX_LINE], fr[MAX_LINE]; c
2017-11-15 11:28:06 644
原创 第15章 Unix域协议
#include struct sockaddr_un{sa_family_t sun_family; /* AF_LOCAL */char sun_path[104]; /*可能是92~108*/};#include //创建两个连接起来的Unix域套接字int socketpair(int family/*AF_LOCAL*/, int typ
2017-11-14 14:26:15 275
原创 第14章 高级I/O函数
设置套接字时间限制:1、使用alarm函数和SIGALRM信号2、使用由select提供的时间限制3、使用SO_RCVTIMEO和SO_SNDTIMEO套接字选项#include ssize_t read(int fd, void *buf, size_t count);ssize_t write(int fd, const void *buf, size_t count);
2017-11-13 17:39:58 458
原创 第13章 守护进程和inetd超级服务器
#include void openlog(const char* ident, int options, int facility);void syslog(int priority, const char* message, ...);void closelog(void);syslog资料
2017-11-13 14:22:20 354
原创 第11章 名字与地址转换
名字和数值地址间的转换:gethostbyname() gethostbyaddr()服务名字和端口号之间的转换: getservbyname() getservbyport()解析器代码读 依赖于 配置文件,文件/etc/resolv.conf一般包含本地名字服务器IP地址。DNS替代方法:静态主机文件,/etc/hosts或者网络信息系统NIS。
2017-11-13 10:25:49 361
原创 第8章 基本UDP套接字编程
在没有启动 UDP 服务器的情况下,客户端键入文本行之后,并不会回显该文本行。此时客户端永远阻塞于它的 recvfrom 调用,等待一个永远不会出现的服务器应答。由于服务器没有启动,因此会响应一个端口不可到达的 ICMP 错误消息(即异步错误),但是该 ICMP 错误消息并不会到达客户端进程,因此客户端进程根本不知道发生什么,一直阻塞于它的 recvfrom 调用。为了能使这个异步错误到达客户端进程,我们可以在 UDP 中调用 connect 函数,使其成为一个已连接的 UDP 套接字,但是该链接不会像 T
2017-11-10 17:45:30 509
原创 第7章 套接字选项
在Linux网络编程中,有时需要设置地址复用,允许发送广播包,将主机加入某个多播组,设置发送与接收缓冲区的大小,设置发送与接收的超时时间,将套接字绑定到某个接口上,发送TCP探测包查看客户端是否保持连接等,这些都需要对套接字选项进行设置.而对套接字选项进行操作的主要有以下两个函数,setsockopt与getsockopt. 这两个函数不仅能够操作套接字层,而且能够操作IP层与TCP层.
2017-11-10 10:54:54 463
原创 第6章 I/O复用:select和poll函数
I/O复用典型使用在下列网络应用场合:1)当客户处理多个描述符(通常是交互式输入和网络套接字)时,必须使用I/O复用2)一个客户同时处理多个套接字是可能的,不过比较少见。在16.5节结合一个web客户的上下文给出这种场合使用select的例子3)如果一个TCP服务器既要处理监听套接字,又要处理已连接套接字,一般就要使用I/O复用4)如果一个服务器既要处理TCP,又要处理UDP,一般就要使用I/O复用。8.15节有这么一个例子5)如果一个服务器要处理多个服务或者镀铬协议(在13.5节讲述的inetd
2017-11-09 17:16:26 361
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人