📄 mysocket.cpp
字号:
// MySocket.cpp : 实现文件
//
#include "stdafx.h"
#include "SMTest1.h"
#include "MySocket.h"
#include "SMTest1.h"
#include "SMTest1Dlg.h"
// CMySocket
CMySocket::CMySocket()
{
m_nLength=0;
memset(m_szBuffer,0,sizeof(m_szBuffer));
m_bConnected=FALSE;
}
CMySocket::~CMySocket()
{
if(m_hSocket!=INVALID_SOCKET) Close();
}
// CMySocket 成员函数
void CMySocket::OnReceive(int nErrorCode)
{
// TODO: 在此添加专用代码和/或调用基类
m_nLength=Receive(m_szBuffer,sizeof(m_szBuffer),0);
//下面两行代码用来获取对话框指针
//CSocketTalkApp* pApp=(CSocketTalkApp*)AfxGetApp();
//CSocketTalkDlg* pDlg=(CSocketTalkDlg*)pApp->m_pMainWnd;
CSMTest1App* pApp=(CSMTest1App*)AfxGetApp();
CSMTest1Dlg* pDlg=(CSMTest1Dlg*)pApp->m_pMainWnd;
pDlg->m_ListMSG.InsertString(0,(LPCTSTR)m_szBuffer);//插到前面去
//pDlg->m_ctrlListMSG.AddString(m_szBuffer);
pDlg->SetListBoxXScrool();
memset(m_szBuffer,0,sizeof(m_szBuffer));
CAsyncSocket::OnReceive(nErrorCode);
}
void CMySocket::OnSend(int nErrorCode)
{
// TODO: 在此添加专用代码和/或调用基类
Send(m_szBuffer,m_nLength,0);
m_nLength=0;
memset(m_szBuffer,0,sizeof(m_szBuffer));
//继续提请一个“读”的网络事件,接收Server消息
AsyncSelect(FD_READ);// 屏蔽这个命令导致 服务器端 接收不到信息 可能是导致CMySock::OnReceive(int nErrorCode)不被调用
CAsyncSocket::OnSend(nErrorCode);
}
void CMySocket::OnConnect(int nErrorCode)
{
// TODO: 在此添加专用代码和/或调用基类
if (nErrorCode==0)
{
m_bConnected=TRUE;
CSMTest1App* pApp=(CSMTest1App*)AfxGetApp();
CSMTest1Dlg* pDlg=(CSMTest1Dlg*)pApp->m_pMainWnd;
memcpy(m_szBuffer,"Connected to ",13);
strncat(m_szBuffer,pDlg->m_szServerAdr, sizeof(pDlg->m_szServerAdr));
//pDlg->m_ListMSG.InsertString(0,(LPCTSTR)m_szBuffer);
pDlg->m_ListMSG.InsertString(0,_T("ddddddd"));
AsyncSelect(FD_READ); ////提请一个“读”的网络事件,准备接收
}
// TODO: Add your specialized code here and END
CAsyncSocket::OnConnect(nErrorCode);
}
char * CMySocket::ConvertUnicodeToAscii(LPCWSTR p, int l)
{
char *Out;
int nChars;
nChars=WideCharToMultiByte(CP_ACP,
0,p,l,NULL,0,NULL,NULL);
if(nChars!=0)
{
Out=(char *)malloc(nChars+1);
if(Out!=NULL)
{
memset(Out,0,nChars+1);
nChars=WideCharToMultiByte(CP_ACP,
0,p,l,Out,nChars,NULL,NULL);
if(nChars==0)
{
free(Out);
Out=NULL;
}
}
}
else
Out=NULL;
if(Out==NULL)
{
Out=(char *)malloc(sizeof(char));
*Out=0;
}
return Out;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -