• 大小: 1.84MB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2023-10-20
  • 语言: 其他
  • 标签: 网络编程  

资源简介

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个文件信息

评论

共有 条评论