当前搜索:

网络编程(58)—— Windows下使用CSocket搭建回声服务端和客户端

CSocket是对CAsyncSocket的一个再次封装,它将CAsyncSocket这种异步不阻塞的socket封装成了同步阻塞的socket。它的实现原理其实很简单,我们应该留意到在CAsyncSocket中Accept、Send、Receive函数被定义成了虚函数: virtual BOO...
阅读(1432) 评论(0)

网络编程(57)—— Windows下使用CAsyncSocket搭建回声服务端和客户端

一、 引言         CAsyncSocket是MFC中对WSAAsyncSelect异步非阻塞通知IO的一个封装类。我们在《Windows下使用WSAAsyncSelect实现窗口处理socket消息》一文中讨论过WSAAsyncSelect的用法,知道它绑定一个窗口到一个socket,...
阅读(897) 评论(0)

网络编程(56)—— Windows下使用IOCP构建socket服务端

一、完成端口对象         不同于IO重叠对象在IO完成时通过触发事件或者触发CompletionRoutine回调函数,IOCP模型将socket和完成端口对象(CompletionPort,简称CP对象)绑定,当IO操作完成时,会改变该对象的状态,而我们通过完成端口对象,便可以确认IO...
阅读(840) 评论(0)

网络编程(55)—— Windows下使用WSASocket基于Completion Routine进行IO重叠

一、引言         上一文中我们介绍了使用基于事件进行IO重叠的方法,本文主要介绍另外一种,基于回调函数void CALLBACK CompletionRoutine(DWORD dwError,DWORDszRecvBytes,LPWSAOVERLAPPED lpOverlapped,D...
阅读(1172) 评论(0)

网络编程(54)—— Windows下使用WSASocket基于事件进行IO重叠

一、引言         本文主要研究下Windows下的IO重叠技术。         何为IO重叠?按照它的定义,在同一个线程中,我们同时向多个目标socket发送数据或者从多个socket接收数据,而我们用于传递和接收的函数未等IO过程结束就返回,而数据的传递和接收工作完全交给了操作系统,在...
阅读(451) 评论(0)

网络编程(53)—— Windows下使用WSAAsyncSelect实现窗口处理socket消息

一、引言        上一文中我们介绍了使用WSAEventSelect实现异步通知IO的方法,本文我们主要讨论下使用WSAAsyncSelect处理socket的方法。本文的主要目标,是创建一个带界面的回声服务端,接收并返回客户端传过来的字符串,并在界面上显示该字符串。为此,我们将采用MFC...
阅读(1214) 评论(0)

网络编程(52)—— Windows下使用WSAEventSelect实现异步通知IO

一、同步IO和异步IO         同步IO是指发生IO事件的时间点和相关函数返回的时间点一致。如使用send函数发送数据时,所有的数据发送到输出缓冲区后,send函数才会返回,这种IO方式就是同步IO。异步IO指函数先于IO事件返回。还是以send函数为例,调用send函数后其马上返回,而数...
阅读(393) 评论(0)

网络编程(51)—— Windows下使用select进行IO复用

本文主要介绍在Windows系统下使用select搭建回声服务端的方法。在之前的《网络编程(16)—— IO复用技术之select》一文中我们介绍了在Linux使用Select进行IO复用的方法。本文对其原理不再详述,旨在通过对比使用加强对select的理解和应用。整个Windows版的selec...
阅读(1885) 评论(0)

网络编程(50)—— 使用poll搭建回声服务端

一、 引言         本文主要介绍在linux中使用poll搭建回射服务端。我们在前面的文章中研究了使用select和epoll搭建服务端的方法。poll的用法和select类似,只不过用来描述操作符集合的是pollfd而非select的fd_set。Poll在Linux 2.5.44版本后...
阅读(885) 评论(0)

网络编程(49)—— epoll的条件触发和边缘触发

一、条件触发和边缘触发         在《网络编程(21)—— 使用epoll进行IO复用》一文中,我们介绍了在linux平台下使用epoll进行IO复用的方法。本文主要介绍epoll中进行IO复用的两种触发方式:条件触发和边缘触发。 1.1 什么是条件触发和边缘触发?        ep...
阅读(1053) 评论(2)

网络编程(48)—— windows平台下的四种线程同步技术(二)

四、内核同步对象—— 互斥(Mutex)         内核线程同步对象包括互斥、信号量和事件,它们使用时存在很多共通之处。下面先介绍在Windows平台利用互斥进行线程的同步。 HANDLE WINAPI CreateMutex( __in_opt LPSECURITY_ATTRIBUTE...
阅读(727) 评论(0)

网络编程(47)—— windows平台下的四种线程同步技术(一)

一、用户模式和内核模式         Windows操作系统在运行时,存在以下两种模式: 用户模式:是运行应用程序的基本模式,不能访问硬件,且访问的内存的范围也有限制。 内核模式:是操作系统运行的基本模式,可以访问硬件,访问的内存范围无限制。         Windows的程序在运...
阅读(899) 评论(0)

网络编程(46)—— windows内核对象的两种状态

一、 什么是内核对象?         我们知道进程、线程、文件、互斥、信号量这些都是操作系统级别的资源。我们在使用这些资源时,实际上都是由操作系统进行创建和管理的。操作系统为了管理这些资 源,会在其内部创建一个数据块,也可以理解为一个结构体对象。这个数据块就是内核对象。 二、 内核对象有哪两种状...
阅读(402) 评论(0)

网络编程(45)—— windows平台下销毁线程的四种方法

原文出自:http://www.cnblogs.com/goalone1985/articles/2126420.html 终止线程运行   若要终止线程的运行,可以使用下面的方法:   • 线程函数返回(最好使用这种方法)。   • 通过调用 ExitThread 函数,线程将自行撤消(最好不...
阅读(648) 评论(0)

网络编程(44)—— windows平台下创建线程的四种方法(三) 工作者线程和CWinThread线程类管理

四、AfxBeginThread 4.2 工作者线程         工作者线程类似我们之前介绍的用CreateThread创建的线程,它在后台处理数据,和主界面线程共享消息循环。它用AfxBeginThread的重载版本创建,函数原型如下: CWinThread* AfxBeginThre...
阅读(1286) 评论(0)

网络编程(43)—— windows平台下创建线程的四种方法(二)之用户界面线程

四、AfxBeginThread         在介绍使用AfxBeginThread进行多线程编程之前,我们先介绍下MFC中两种线程的概念,这也是在MFC编程中无法绕过的两种类型的线程 —— 用户界面线程和工作者线程。 4.1 用户界面线程         用户界面线程,顾名思义,它是一种可以...
阅读(987) 评论(0)

网络编程(42)—— windows平台下创建线程的四种方法(一)

一、引言        接下来,笔者主要谈下Windows平台下多线程的用法。首先,要强调一点,Windows平台的线程linux中的线程不同,它会伴着主函数的结束而销毁。Windows平台下可用的创建多线程的API共有四个,分别是: (1) CreateThread()         Crea...
阅读(469) 评论(0)

网络编程(41)—— Linux线程销毁的两种方法

Linux的线程的创建必然会伴随着内存空间的分配,而当线程函数执行完毕时,线程空间同样也不会被自动收回。特别是,Linux线程的销毁和进程也不一样,即使主函数结束,如果不主动回收,线程空间也不会被释放。类似于永远不能被回收的僵尸进程,我们姑且叫这种线程为僵尸线程吧。本文就是介绍回收这种僵尸线程的资...
阅读(2432) 评论(1)

网络编程(40)—— 使用信号量semaphore进行多进程间的同步

本文主要介绍下在多进程中使用信号量semaphore的方法。在上一文中,我们已经知道semaphore和mutex对临界区访问控制的一个最主要区别就是semaphore可以跨进程使用,而mutex只能在一个进程中使用。我们再来看下sem_init的原型,熟悉决定进程共享或者线程共享的方法: #in...
阅读(1972) 评论(0)

网络编程(39)—— 使用信号量semaphore进行多线程同步

一、Semaphore相关函数       之前介绍过了多线程中利用互斥mutex控制多线程中对临界区的访问方法,本文主要介绍下利用信号量semaphore控制线程对临界区的访问。 首先,我们先看一下semaphore相关的函数: 1.1 头文件 #include         与之前互斥mut...
阅读(519) 评论(0)
    个人资料
    专栏达人 持之以恒
    等级:
    访问量: 57万+
    积分: 8525
    排名: 2911
    其它平台
    博客专栏