资源简介
1.采用重叠I/O方式实现的socket网络编程,异步非阻塞方式,代码效率比阻塞式的socket编程方式高。2.实现了TCP server方式,只用于服务端,可以支持多客户端。3.可以使用在各种场合用于监控网络数据。4.代码封装成库形式,非常方便移植。5.本程序使用到了多线程技术,互斥同步线程技术,同时支持多通道连接技术,非常经典,程序注释完整,思路清晰。
代码片段和文件信息
#include “stdafx.h“
#include “eventsockmulti.h“
#include
CEventSockMulti::CEventSockMulti()
{
m_bTcpServRun = 0;
m_bTcpClientRun = 0;
m_bUdpServRun = 0;
m_bUdpClientRun = 0;
m_bEndThread = 0;
m_bRecvData = 0;
m_bSendData = 0;
m_bCallThread = 0;
m_Thread = NULL;
m_Thread2 = NULL;
p_Owner = NULL;
memset(m_SendBuf0sizeof(m_SendBuf));
memset(m_RecvBuf0sizeof(m_RecvBuf));
memset(m_EventArray0sizeof(m_EventArray));
memset(m_sockFlag0sizeof(m_sockFlag));
m_LocalIpAddr = _T(“127.0.0.1“);
m_RemoteIpAddr = _T(“127.0.0.1“);
m_LocalPort = 8000;
m_RemotePort = 8000;
m_dwEventTotal = 0;
m_dwSocketTotal = 0;
m_hMutex1 = NULL;
m_sock = 0;
m_Srvsock = 0;
}
CEventSockMulti::~CEventSockMulti()
{
}
UINT CEventSockMulti::TcpServThread(LPVOID pParam)
{
DWORD recvedLength = 0; //已经接收到的字节数
DWORD sentLength = 0; //已经发送的字节数
DWORD dwWaitResult = 0;
DWORD Flags = 0;
int SockChannel = 0; //表示套接字对应链路的通道号。
//获取CEventSockMulti对象指针。
CEventSockMulti *pThread = (CEventSockMulti*)pParam;
//初始化WSA
WORD sockVersion = MAKEWORD(22);
WSADATA wsaData;
if( WSAStartup(sockVersion &wsaData) != 0 ) //加载套接字版本
{
AfxMessageBox(“load tcp server socket error !“);
return 0;
}
AfxMessageBox(“load tcp server socket successfully!“);
//创建套接字
//SOCKET TcpSrvSocket = socket(AF_INET SOCK_STREAM IPPROTO_TCP);
pThread->m_sockarr[0] = socket(AF_INET SOCK_STREAM IPPROTO_TCP);
if(pThread->m_sockarr[0] == INVALID_SOCKET)
{
AfxMessageBox(“create tcp server socket error !“);
return 0;
}
pThread->m_Srvsock = pThread->m_sockarr[0]; //传递套接字给主线程,用于关闭套接字。
m_sockFlag[0] = 1;
AfxMessageBox(“create tcp server socket successfully !“);
//绑定套接字
sockaddr_in TcpSrvAddr;
memset( &TcpSrvAddr0sizeof(TcpSrvAddr) );
TcpSrvAddr.sin_addr.S_un.S_addr = /*htonl(INADDR_ANY);*/inet_addr(pThread->m_LocalIpAddr);
TcpSrvAddr.sin_family = AF_INET;
TcpSrvAddr.sin_port = htons(pThread->m_LocalPort);
if( bind(pThread->m_sockarr[0](SOCKADDR*)&TcpSrvAddrsizeof(TcpSrvAddr)) == SOCKET_ERROR )
{
AfxMessageBox(“bind tcp server socket error !“);
return 0;
}
AfxMessageBox(“bind tcp server socket successfully.“);
//监听套接字
if( listen(pThread->m_sockarr[0]5) == SOCKET_ERROR )
{
AfxMessageBox(“listen tcp server socket error !“);
return 0;
}
AfxMessageBox(“listen tcp server socket successfully.“);
//服务端开始通信
//SOCKET CommSocket;
sockaddr_in RemoteAddr;
memset( &RemoteAddr0sizeof(RemoteAddr) );
int nAddrlen = sizeof(RemoteAddr);
/*
**pThread->m_EventArray[0]对应关闭进程句柄,放在主线程初始化部分。
*/
//pThread->m_dwEventTotal = 0;
//pThread->m_EventArray[/*pThread->m_dwEventTotal*/1] = WSACreateEvent(); //创建一个事件句柄用于关闭线程。
pThread->m_dwEventTotal = 0;
pThread->m_dwSocketTotal = 0;
/*
**创建互斥对象,使其一开始就具有信号状态。
*/
pThread->m
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 22407 2019-05-07 08:10 MultiMonitor\Debug\eventSockMulti.obj
文件 118893 2019-05-07 08:10 MultiMonitor\Debug\MultiMonitor.exe
文件 284124 2019-05-07 08:10 MultiMonitor\Debug\MultiMonitor.ilk
文件 19051 2019-05-06 20:10 MultiMonitor\Debug\MultiMonitor.obj
文件 5497828 2019-05-06 20:10 MultiMonitor\Debug\MultiMonitor.pch
文件 427008 2019-05-07 08:10 MultiMonitor\Debug\MultiMonitor.pdb
文件 3180 2019-05-06 20:10 MultiMonitor\Debug\MultiMonitor.res
文件 44064 2019-05-06 20:56 MultiMonitor\Debug\MultiMonitorDlg.obj
文件 105941 2019-05-06 20:10 MultiMonitor\Debug\StdAfx.obj
文件 214016 2019-05-07 08:10 MultiMonitor\Debug\vc60.idb
文件 372736 2019-05-07 08:10 MultiMonitor\Debug\vc60.pdb
文件 13132 2019-05-06 13:54 MultiMonitor\eventSockMulti _backup.cpp
文件 15074 2019-05-07 08:10 MultiMonitor\eventSockMulti.cpp
文件 2132 2019-05-06 20:09 MultiMonitor\eventSockMulti.h
文件 16384 2019-05-06 15:06 MultiMonitor\MultiMonitor-SI\MultiMonitor-SI.IAB
文件 488 2019-05-06 15:06 MultiMonitor\MultiMonitor-SI\MultiMonitor-SI.IAD
文件 4096 2019-05-04 15:52 MultiMonitor\MultiMonitor-SI\MultiMonitor-SI.IMB
文件 368 2019-05-04 15:52 MultiMonitor\MultiMonitor-SI\MultiMonitor-SI.IMD
文件 48 2019-05-06 15:06 MultiMonitor\MultiMonitor-SI\MultiMonitor-SI.PFI
文件 776 2019-05-06 15:06 MultiMonitor\MultiMonitor-SI\MultiMonitor-SI.PO
文件 4256 2019-05-06 15:06 MultiMonitor\MultiMonitor-SI\MultiMonitor-SI.PR
文件 24800 2019-05-06 15:06 MultiMonitor\MultiMonitor-SI\MultiMonitor-SI.PRI
文件 24764 2019-05-06 15:06 MultiMonitor\MultiMonitor-SI\MultiMonitor-SI.PS
文件 36760 2019-05-05 09:29 MultiMonitor\MultiMonitor.aps
文件 1828 2019-05-07 08:22 MultiMonitor\MultiMonitor.clw
文件 1941 2019-05-04 08:30 MultiMonitor\MultiMonitor.cpp
文件 4407 2019-05-04 08:34 MultiMonitor\MultiMonitor.dsp
文件 547 2019-05-04 08:30 MultiMonitor\MultiMonitor.dsw
文件 1390 2019-05-04 08:30 MultiMonitor\MultiMonitor.h
文件 74752 2019-05-07 08:24 MultiMonitor\MultiMonitor.ncb
............此处省略18个文件信息
- 上一篇:现代密码学课件和习题答案
- 下一篇:2018最新免杀壳
相关资源
- Windows网络编程(第二版)
- UNIX网络编程 卷1(第三版 英文版)
- 网络课程设计购物网站
- Windows网络编程 带书签 第二版.pdf
- 网络编程实用教程.pdf
- socket网络编程,可以实现聊天系统,
- Linux网络编程+RouterOS_3.0中文教程+Rou
- 网络编程实用教程ppt+源码.rar
- TCP/IP高级编程
- UNIX Network Programming Volume 1 Third Editio
- 简单的聊天程序 网络编程 UDP TCP
- Windows网络编程第二版源码(补充材料
- TCP IP协议与网络编程 任泰明
- Visual_C__.NET程序设计实用教程第2版源
- Linux网络编程-网络基础-socket编程-高并
- 黑马_Linux网络编程-网络基础-socket编程
- 仿QO游戏大厅之网络五子棋
- 网络编程实用教程资料
- 网络编程.rar
- UNIX网络编程卷1第三版中文.part2
- UNIX网络编程 卷2
- ACE编程超全面
- UNIX网络编程_卷2
- windows网络编程源代码
- 想学好网络编程必看的书
- QT实现群聊私聊
- WINDOWS网络编程技术(PDF
- Unix网络编程高清非扫描版PDF英文
- 《windows网络编程》中文高清PDF
- Qt网络编程项目:斗地主+详细设计文
评论
共有 条评论