资源简介
完成端口通讯服务器(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个文件信息
- 上一篇:磁链观测方案.pdf
- 下一篇:STM32 LMS算法
相关资源
- 安卓socket控制树莓派GPIO(含server及
- windows下7种winsocket的I/O编程模型
- .net websocket简单
- websocket简单实现
- 网狐6603内核KernelEngine和WHSocket源码
- openssl 结合 IOCP的
- socket端口数据转发
- 蓝恒Windows Socket5代理服务器 V1.6免费版
- websocket仿微信后台即时通讯功能
- Windows网络编程第二版真正的高清带书
- Okhttp实现websocket链接
- Qt编写局域网内五子棋对战
- SignalR完整源码
- 图解TCP/IP(第5版)
- Qt OpenCV 播放及Socket发送视频流
- websocket2018
- 三菱Q系列PLC---TCP通讯测试程序、soc
- 仿真telnet
- 实战Linux+Socket编程.pdf
- Streamedian WS RTSP Proxy Server 1.8.5.exe
- SpringMVC+Redis+Activiti+Fastdfs+Thirft+Websoc
- kukaTCP通讯、ETHERNETKRL2.8
- 基于TCP的Socket编程服务器和客户端代
- newgcWebSockets 4.1.0.Full.Source稳定版
- TCP/IP网络编程 尹圣雨源代码+PDF书籍
- 基于QT的socket TCP通信原创
- CSocket多线程聊天室源码
- 基于websocket的即时通讯H5App源码.rar
- QT下多线程 UDP socket
- sgcWebSockets421.zip
评论
共有 条评论