📄 testcomm.cpp
字号:
// TestComm.cpp : implementation file
//
#include "stdafx.h"
#include "GateAgent.h"
#include "TestComm.h"
#include "RecvData.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CTestComm
IMPLEMENT_DYNCREATE(CTestComm, CWinThread)
CTestComm::CTestComm()
{
}
CTestComm::~CTestComm()
{
}
BOOL CTestComm::InitInstance()
{
// TODO: perform and per-thread initialization here
return TRUE;
}
int CTestComm::ExitInstance()
{
// TODO: perform any per-thread cleanup here
return CWinThread::ExitInstance();
}
BEGIN_MESSAGE_MAP(CTestComm, CWinThread)
//{{AFX_MSG_MAP(CTestComm)
// NOTE - the ClassWizard will add and remove mapping macros here.
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CTestComm message handlers
int CTestComm::Run()
{
// TODO: Add your specialized code here and/or call the base class
return CWinThread::Run();
}
int CTestComm::OnInitSocket()
{
SOCKET m_ServerSock;
struct sockaddr_in addr;
m_ServerSock = socket(AF_INET, SOCK_STREAM, 0);
if (m_ServerSock <= 0)
{
return -1;
}
memset((void *)&addr,0,sizeof(addr));
addr.sin_family =AF_INET;
addr.sin_port =htons(6000);
addr.sin_addr.S_un .S_addr =htonl(INADDR_ANY);
if (bind(m_ServerSock, (struct sockaddr *)&addr, sizeof(addr)) != 0)
{
closesocket(m_ServerSock);
return -1;
}
if (listen(m_ServerSock, 15))
{
closesocket(m_ServerSock);
return -1;
}
struct sockaddr_in stSockAddr_C;
int iSockAddr_C = sizeof(stSockAddr_C);
char chrMsg[350]={0};
while(!m_bStopFlag)
{
SOCKET socketClient = accept(m_ServerSock, (struct sockaddr*)&stSockAddr_C, &iSockAddr_C);
if (socketClient != INVALID_SOCKET)
{
CRecvData *pRWThread = NULL;
pRWThread =(CRecvData *)AfxBeginThread(
RUNTIME_CLASS(CRecvData),
THREAD_PRIORITY_NORMAL,
0,
CREATE_SUSPENDED,
NULL);
if (pRWThread != NULL)
{
pRWThread->m_pDlg = m_pDlg;
pRWThread->m_ClientSocket = socketClient;
pRWThread->m_bAutoDelete = TRUE;
// 获取客户端IP
sockaddr_in name;
int iLen = sizeof(name);
getpeername(socketClient,(sockaddr *)&name,(int *)&iLen);
sprintf(chrMsg,"客户端[IP:%s ]接入...", inet_ntoa(name.sin_addr));
OnInsertMess(chrMsg,true,false);
strcpy(pRWThread->m_nClientIP, inet_ntoa(name.sin_addr));
//memset(&m_pRWThread->m_pstServerSock, 0, sizeof(ST_SERVER_SOCK));
//memcpy(&m_pRWThread->m_pstServerSock, &m_pstServerSock[iTmp], sizeof(ST_SERVER_SOCK));
//memcpy(&m_pRWThread->m_stTransmitIPPORT, &m_stTransmitIPPORT[iTmp], sizeof(ST_TRANSMIT_IPPORT));
//pRWThread->m_iArray = iTmp;
pRWThread->m_pstServSock = m_pstServSock; // 传递指针
pRWThread->m_pstTransInfo = m_pstTransInfo; // 传递指针
pRWThread->m_bStopFlag = FALSE;
pRWThread->ResumeThread(); //启动数据收发线程
}
else
{
closesocket(socketClient);
}
return 0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -