-
大小: 1.84MB文件類型: .rar金幣: 2下載: 0 次發(fā)布日期: 2023-10-20
- 語言: 其他
- 標(biāo)簽: 網(wǎng)絡(luò)編程??
資源簡介
1.采用重疊I/O方式實(shí)現(xiàn)的socket網(wǎng)絡(luò)編程,異步非阻塞方式,代碼效率比阻塞式的socket編程方式高。2.實(shí)現(xiàn)了TCP server方式,只用于服務(wù)端,可以支持多客戶端。3.可以使用在各種場合用于監(jiān)控網(wǎng)絡(luò)數(shù)據(jù)。4.代碼封裝成庫形式,非常方便移植。5.本程序使用到了多線程技術(shù),互斥同步線程技術(shù),同時支持多通道連接技術(shù),非常經(jīng)典,程序注釋完整,思路清晰。

代碼片段和文件信息
#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;????????//已經(jīng)接收到的字節(jié)數(shù)
DWORD?sentLength?=?0; //已經(jīng)發(fā)送的字節(jié)數(shù)
DWORD?dwWaitResult?=?0;
DWORD?Flags?=?0;
int?SockChannel?=?0;????????????//表示套接字對應(yīng)鏈路的通道號。
//獲取CEventSockMulti對象指針。
CEventSockMulti?*pThread?=?(CEventSockMulti*)pParam;
//初始化WSA??
????WORD?sockVersion?=?MAKEWORD(22);??
????WSADATA?wsaData;??
????if(?WSAStartup(sockVersion?&wsaData)?!=?0?)????//加載套接字版本
????{??
AfxMessageBox(“l(fā)oad?tcp?server?socket?error?!“);??
????????return?0;??
????}
AfxMessageBox(“l(fā)oad?tcp?server?socket?successfully!“);??
//創(chuàng)建套接字??
//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]; //傳遞套接字給主線程,用于關(guān)閉套接字。
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.“);
//監(jiān)聽套接字
if(?listen(pThread->m_sockarr[0]5)?==?SOCKET_ERROR?)
{
AfxMessageBox(“l(fā)isten?tcp?server?socket?error?!“);??
????????return?0;??
}
AfxMessageBox(“l(fā)isten?tcp?server?socket?successfully.“);
//服務(wù)端開始通信
//SOCKET?CommSocket;
sockaddr_in?RemoteAddr;
memset(?&RemoteAddr0sizeof(RemoteAddr)?);
int?nAddrlen?=?sizeof(RemoteAddr);?
/*
**pThread->m_EventArray[0]對應(yīng)關(guān)閉進(jìn)程句柄,放在主線程初始化部分。
*/
//pThread->m_dwEventTotal?=?0;
//pThread->m_EventArray[/*pThread->m_dwEventTotal*/1]?=?WSACreateEvent(); //創(chuàng)建一個事件句柄用于關(guān)閉線程。
pThread->m_dwEventTotal?=?0;
pThread->m_dwSocketTotal?=?0;
/*
**創(chuàng)建互斥對象,使其一開始就具有信號狀態(tài)。
*/
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個文件信息
- 上一篇:現(xiàn)代密碼學(xué)課件和習(xí)題答案
- 下一篇:2018最新免殺殼
評論
共有 條評論