⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mysocket.cpp

📁 TELNET手机客户端程序
💻 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 + -