2008年11月18日

转载 strtok收藏

函数名:   strtok    
  功     能:   查找由在第二个串中指定的分界符分隔开的单词    
  用     法:   char   *strtok(char   *str1,   char   *str2);    
  程序例:    

  #include  
  #include  

  int   main(void)    
  {    
        char   input[16]   =   "abc,d";    
        char   *p;    

        /*   strtok   places   a   NULL   terminator    
        in   front   of   the   token,   if   found   */     阅读全文>

发表于 @ 2008年11月18日 12:34:00|评论(loading...)|收藏

2008年11月12日

转载  重叠模型--事件对象通知收藏

第一章 一. 重叠模型的优点 1. 可以运行在支持Winsock2的所有Windows平台 ,而不像完成端口只是支持NT系统。 2. 比起阻塞、select、WSAAsyncSelect以及WSAEventSelect等模型,重叠I/O(Overlapped I/O)模型使应用程序能达到更佳的系统性能。 因为它和这4种模型不同的是,使用重叠模型的应用程序通知缓冲区收发系统直接使用数据,也就是说,如果应用程序投递了一个10KB大小的缓冲区来接收数据,且数据已经到达套接字,则该数据将直接被拷贝到投递的缓冲区。 而这4种模型种,数据到达并拷贝到单套接字接收缓冲区中,此时应用程序会被告知可以读入的容量。当应用程序调用接收函数之后,数据才从单套接字缓冲区拷贝到应用程序的缓冲区,差别就体现出来了。 3. 从《windows网络编程》中提供的试验结果中可以看到,在使用了P4 1.7G Xero处理器(CPU很强啊)以及768MB的回应服务器中,最大可以处理4万多个SOC阅读全文>

发表于 @ 2008年11月12日 16:27:00|评论(loading...)|收藏

翻译 WSAEventSelect-事件通知模型收藏

SOCKET Socket[WSA_MAXIMUM_WAIT_EVENTS];WSAEVENT Event[WSA_MAXIMUM_WAIT_EVENTS];SOCKET Accept, Listen;DWORD EventTotal = 0;DWORD Index;// Set up a TCP socket for listening on port 5150 Listen = socket(PF_INET, SOCK_STREAM, 0);InternetAddr.sin_family = AF_INET;InternetAddr.sin_addr.s_addr = htonl(INADDR_ANY);InternetAddr.sin_port = htons(5150);bind(Listen, (PSOCKADDR) &InternetAddr, sizeof(InternetAddr));NewEvent = WSACreateEvent();WSAEventSelect(Listen, NewEvent, FD_ACCEPT | FD_CLOSE);listen(List阅读全文>

发表于 @ 2008年11月12日 11:46:00|评论(loading...)|收藏

转载 WSAAsyncSelect 异步I/O模型收藏

WSAAsyncSelect(s, hwnd, WM_SOCKET, FD_CONNECT | FD_READ | FD_WRITE | FD_CLOSE); 这样一来,我们的应用程序以后便可在套接字 s上,接收到有关连接、发送、接收以及套接字关闭这一系列网络事件的通知。特别要注意的是,多个事件务必在套接字上一次注册!另外还要注意的是,一旦在某个套接字上允许了事件通知,那么以后除非明确调用c l o s e s o c k e t命令,或者由应用程序针对那个套接字调用了 W S A A s y n c S e l e c t,从而更改了注册的网络事件类型,否则的话,事件通知会永远有效!若将 l E v e n t参数设为0,效果相当于停止在套接字上进行的所有网络事件通知。若应用程序针对一个套接字调用了W S A A s y n c S e l e c t,那么套接字的模式会从“锁定”自动变成“非锁定”,我们在前面已提到过这一点。这样一来,假如调用了像W S A R e c v这样的Wi n s o c kI / O函数,但当时却并没有数据可用,那么必阅读全文>

发表于 @ 2008年11月12日 11:43:00|评论(loading...)|收藏

转载 很幽默的讲解六种Socket IO模型收藏

 很幽默的讲解六种Socket IO模型(转)
本文简单介绍了当前Windows支持的各种Socket I/O模型,如果你发现其中存在什么错误请务必赐教。
一:select模型
二:WSAAsyncSelect模型
三:WSAEventSelect模型
四:Overlapped I/O 事件通知模型
五:Overlapped I/O 完成例程模型
六:IOCP模型
老陈有一个在外地工作的女儿,不能经常回来,老陈和她通过信件联系。他们的信会被邮递员投递到他们的信箱里。
这和Socket模型非常类似。下面我就以老陈接收信件为例讲解Socket I/O模型~~~
一:select模型
老陈非常想看到女儿的信。以至于他每隔10分钟就下楼检查信箱,看是否有女儿的信~~~~~
在这种情况下,"下楼检查信箱"然后回到楼上耽误了老陈太多的时间,以至于老陈无法做其他工作。
select模型和老陈的这种情况非常相似:周而复始地去检查......如果有数据阅读全文>

发表于 @ 2008年11月12日 11:17:00|评论(loading...)|收藏

2008年10月30日

转载 多线程同步收藏


线程的同步可分用户模式的线程同步和内核对象的线程同步两大类
临界区是属于用户模式的线程同步; 只能用于一个进程里面的多线程同步
内核的同步有:
管理事件内核对象:跨进程:使用临界区只能同步同一进程中的线程,而使用事件内核对象则可以对进程外的线程进行同步,其前提是得到对此事件对象的访问权。可以通过OpenEvent()函数获取得到,其函数原型为:

信号量内核对象:不能跨进程: 信号量的使用特点使其更适用于对Socket(套接字)程序中线程的同步。例如,网络上的HTTP服务器要对同一时间内访问同一页面的用户数加以限制,这时可以为没一个用户对服务器的页面请求设置一个线程,而页面则是待保护的共享资源,通过使用信号量对线程的同步作用可以确保在任一时刻无论有多少用户对某一页面进行访问,只有不大于设定的最大用户数目的线程能够进行访问,而其他的访问企图则被挂起,只有在有用户退出对此页面的访问后才有可能进入
互斥内核对象:跨进程 互斥(Mutex)是一种用途非常广泛的内核对象。能够保证多个线程对同一共享资源的互斥访问。同临界区有些阅读全文>

发表于 @ 2008年10月30日 15:30:00|评论(loading...)|收藏

转载 C++中Static作用和使用方法收藏

Static阅读全文>

发表于 @ 2008年10月30日 11:24:00|评论(loading...)|收藏

Csdn Blog version 3.1a
Copyright © zhengjie