📄 sockettest.cpp
字号:
// SocketTest.cpp : implementation file
//
#include "stdafx.h"
#include "GateAgent.h"
#include "SocketTest.h"
#include "RecvData.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CSocketTest
extern bool g_bRun;
extern int g_nMax;
IMPLEMENT_DYNCREATE(CSocketTest, CWinThread)
CSocketTest::CSocketTest()
{
}
CSocketTest::~CSocketTest()
{
}
BOOL CSocketTest::InitInstance()
{
// TODO: perform and per-thread initialization here
return TRUE;
}
int CSocketTest::ExitInstance()
{
// TODO: perform any per-thread cleanup here
return CWinThread::ExitInstance();
}
BEGIN_MESSAGE_MAP(CSocketTest, CWinThread)
//{{AFX_MSG_MAP(CSocketTest)
// NOTE - the ClassWizard will add and remove mapping macros here.
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CSocketTest message handlers
int CSocketTest::Run()
{
int iRet=OnTestInSocket();
if (iRet<0)
{
return -1;
}
if(g_bRun)
{
return CWinThread::Run();
}
else
{
return -1;
}
}
int CSocketTest::OnTestInSocket()
{
bool m_bStopFlag = false;
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(g_bRun)
{
SOCKET socketClient = accept(m_ServerSock, (struct sockaddr*)&stSockAddr_C, &iSockAddr_C);
if (socketClient != INVALID_SOCKET)
{
if (g_nMax<300)
{
CRecvData *pRWThread = NULL;
pRWThread =(CRecvData *)AfxBeginThread(
RUNTIME_CLASS(CRecvData),
THREAD_PRIORITY_NORMAL,
0,
CREATE_SUSPENDED,
NULL);
if (pRWThread != NULL)
{
g_nMax++;
pRWThread->m_pDlg = m_pDlg;
pRWThread->m_ClientSocket = socketClient;
pRWThread->m_bAutoDelete = true;
pRWThread->m_iSendNum = m_iSendNum;
// 获取客户端IP
sockaddr_in name;
int iLen = sizeof(name);
getpeername(socketClient,(sockaddr *)&name,(int *)&iLen);
sprintf(chrMsg,"客户端[IP:%s PORT:%d]接入...", inet_ntoa(name.sin_addr),socketClient);
m_pDlg->OnInsertMess(chrMsg,true,false);
strcpy(pRWThread->m_nClientIP, inet_ntoa(name.sin_addr));
pRWThread->ResumeThread(); //启动数据收发线程
}
else
{
closesocket(socketClient);
}
}
else
{
m_pDlg->OnInsertMess("系统太忙",true,true);
}//if (g_nMax<200)
}//if (socketClient != INVALID_SOCKET)
}
return 0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -