91av视频/亚洲h视频/操亚洲美女/外国一级黄色毛片 - 国产三级三级三级三级

  • 大小: 966KB
    文件類型: .rar
    金幣: 1
    下載: 0 次
    發布日期: 2023-07-18
  • 語言: 其他
  • 標簽: IOCP??Socket??Servre??

資源簡介

完成端口通訊服務器(IOCP Socket Server)設計 (六)功能強大的IOCP Socket Servre模塊例程源碼 Copyright ? 2009 代碼客(盧益貴)版權所有 QQ:48092788 源碼博客:http://blog.csdn.net/guestcode 一、聲明 版權聲明: 1、通訊模塊代碼版權歸作者所有; 2、未經許可不得全部或部分用于任何項目開發; 3、未經許可不得部分修改后再利用源碼。 免責聲明: 1、 由于設計缺陷或其它Bug造成的后果,作者不承擔責任; 2、未經許可的使用作者不提供任何技術支持服務。 權利和義務: 1、任何獲得源碼并發現Bug的個人或單位均有義務向作者反映; 2、作者保留追究侵權者法律責任的權利。 二、開發背景 部分代碼由前項目分離而來,尚未有應用考驗,但對于初學者學習和進階有很大幫助。性能上尚未有定論,但應該不會令你失望。 三、功能說明 1、可以關閉Socket的Buffer; 2、可以關閉MTU(不等待MTU滿才發送); 3、可以多IP或多端口監聽; 4、可以重用socket(主動關閉除外); 5、可以0緩沖接收(Socket的Buffe = 0時,避免過多的鎖定內存頁); 6、可以0緩沖連接(客戶端僅連接,不一定立即發數據); 7、可以條件編譯: a、是否使用內核Singly-linked lists; b、是否使用處理線程(工作線程和處理線程分開); c、是否使用內核鎖來同步鏈表。 8、可以實現集群服務器模式的通訊(有客戶端socket); 9、可以單獨設置每個連接的Data項來實現連接和Usernfo的關聯; 10、每個線程有OnBegin和OnEnd,用于設置線程獨立的對象(數據庫會話對象); 11、可以提供詳細的運行情況,便于了解IOCP下的機制,以及進行調試分析; 12、可以發起巨量連接和數據(需要硬件配置來支持)。

資源截圖

代碼片段和文件信息

/********************************************************************************
* *
* GSocket:完成端口通訊模塊(IOCP?Socket) *
* ——GCommProtocol *
* *
* Copyright???2009??代碼客(盧益貴)??版權所有 *
* 未經許可,不得用于任何項目開發 *
*??QQ:48092788??E-Mail:gcode@qq.com??源碼博客:http://blog.csdn.net/guestcode *
* *
* GSN:34674B4D-1F63-11D3-B64C-11C04F79498E *
********************************************************************************/

#include?“stdafx.h“

#include?
#include?

#include?“GLog.h“
#include?“GWorkerThread.h“
#include?“GPerIoData.h“
#include?“GPerHandleData.h“
#include?“GSocketInside.h“
#include?“GSocket.h“

BOOL?GCommProt_ProcessReceive(PGHND_DATA?pHndData?char*?pBuf?DWORD?dwBytes?PFN_ON_GHND_DATA_EVENT?pfnOnProc)
{
//在這里使用GCommProtocol處理粘包
//......
pfnOnProc((DWORD)pHndData?pBuf?dwBytes);
return(FALSE);
}

BOOL?GCommProt_PostSend(PGHND_DATA?pHndData?PGIO_DATA?pIoData)
{
DWORD?dwBytes;
pIoData->OperType?=?GIO_WRITE_COMPLETED;
if((SOCKET_ERROR?==?WSASend(pHndData->Socket?&(pIoData->WSABuf)?1?&dwBytes?0?LPWSAOVERLAPPED(pIoData)?NULL))?&&
(WSAGetLastError()?!=?ERROR_IO_PENDING))
{
PostQueuedCompletionStatus(hGWkrThrdCompletionPort?0?(DWORD)pHndData?LPWSAOVERLAPPED(pIoData));
return(FALSE);
}else
return(TRUE);
}

BOOL?GCommProt_PostSendGBuf(DWORD?dwClientContext?PGIO_BUF?pGBuf?DWORD?dwBytes)
{
pGBuf?=?(PGIO_BUF)((char?*)pGBuf?-?dwGBufOffset);
((PGIO_DATA)pGBuf)->WSABuf.len?=?dwBytes;
return(GCommProt_PostSend((PGHND_DATA)dwClientContext?(PGIO_DATA)pGBuf));
}

BOOL?GCommProt_PostSendBuf(DWORD?dwClientContext?char*?pBuf?DWORD?dwBytes)
{
//在這里使用GCommProtocol處理發送
//if(dwBytes?>?dwGBufSize)
//......

PGIO_DATA?pIoData;

pIoData?=?GIoDat_Alloc();
if(!pIoData)
{
GLog_Write(“GSock_PostSendBuf:分配IoData失敗,無法投遞發送請求“);
return(FALSE);
}
CopyMemory(&(pIoData->cData)?pBuf?dwBytes);
pIoData->WSABuf.len?=?dwBytes;
return(GCommProt_PostSend((PGHND_DATA)dwClientContext?pIoData));
}

void?GCommProt_Init(void)
{
GIoDat_SetPackHeadSize(0);
GIoDat_SetPackTailSize(0);
}




?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----

?????文件?????134656??2009-08-27?23:05??完成端口通訊服務器(IOCP?Socket?Server)設計——(2)內存管理(AWE).doc

?????文件??????60928??2009-09-08?00:41??完成端口通訊服務器(IOCP?Socket?Server)設計——(3)不要迷信API(單鏈表的另一種算法).doc

?????文件??????78336??2009-09-08?00:40??完成端口通訊服務器(IOCP?Socket?Server)設計——(4)一個簡單而又靈活的IOCP模塊.doc

?????文件??????56320??2009-09-19?22:04??完成端口通訊服務器(IOCP?Socket?Server)設計——(5)妙用PerHandleData和PerIoData.doc

?????文件????1097216??2009-09-20?00:52??完成端口通訊服務器(IOCP?Socket?Server)設計——(6)功能強大的IOCP?Socket?Servre模塊例程源碼.doc

?????文件??????61940??2009-09-20?01:06??GMemMngDemo\GMemMngDemo.aps

?????文件???????1679??2009-09-20?01:02??GMemMngDemo\GMemMngDemo.cpp

?????文件????????471??2009-09-20?01:03??GMemMngDemo\GMemMngDemo.h

?????文件???????8157??2009-09-20?01:06??GMemMngDemo\GMemMngDemo.rc

?????文件???????5648??2009-09-19?14:14??GMemMngDemo\GMemMngDemo.vcproj

?????文件???????1411??2009-09-20?01:11??GMemMngDemo\GMemMngDemo.vcproj.LEMO139.Administrator.user

?????文件??????21836??2009-09-20?01:03??GMemMngDemo\GMemMngDemoDlg.cpp

?????文件???????2124??2009-09-20?01:02??GMemMngDemo\GMemMngDemoDlg.h

?????文件???????2684??2009-08-20?17:36??GMemMngDemo\ReadMe.txt

?????文件??????21630??2003-07-24?09:52??GMemMngDemo\res\GMemMngDemo.ico

?????文件????????367??2009-08-20?17:36??GMemMngDemo\res\GMemMngDemo.rc2

?????文件???????1833??2009-09-20?01:02??GMemMngDemo\Resource.h

?????文件????????142??2009-08-20?17:36??GMemMngDemo\stdafx.cpp

?????文件???????1794??2009-09-20?01:02??GMemMngDemo\stdafx.h

?????文件???????1030??2009-09-20?01:02??GMemMngDemo\targetver.h

?????文件??????73108??2009-09-20?01:01??GSocketDemo\GSocketDemo.aps

?????文件???????1328??2009-09-20?01:05??GSocketDemo\GSocketDemo.cpp

?????文件????????472??2009-09-20?01:05??GSocketDemo\GSocketDemo.h

?????文件??????14701??2009-09-20?01:01??GSocketDemo\GSocketDemo.rc

?????文件???????7178??2009-09-20?00:57??GSocketDemo\GSocketDemo.vcproj

?????文件???????1411??2009-09-20?01:11??GSocketDemo\GSocketDemo.vcproj.LEMO139.Administrator.user

?????文件??????30762??2009-09-20?01:05??GSocketDemo\GSocketDemoDlg.cpp

?????文件???????4517??2009-09-20?01:05??GSocketDemo\GSocketDemoDlg.h

?????文件??????19322??2009-09-20?01:05??GSocketDemo\GSockInfo.cpp

?????文件???????2391??2009-09-20?01:05??GSocketDemo\GSockInfo.h

............此處省略46個文件信息

評論

共有 條評論