VC VS2008 MFC CServerSocket 通信? 本帖最后由 VisualEleven 于 2011-04-26 10:45:33 编辑 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 CServerSocket,自己封装的,继承CSocket?or 直接继承CAsyncSocket? 继承CSocket,这个必须自己写么?有没有DLL 用CSocket类,还不如用socket API去写,流程很清楚 //sock1.h#define WM_UPDATEMSG WM_USER+100//////////////服务/////////////////////////////////////////class CServerSocket : public CSocket{public: CServerSocket(); virtual ~CServerSocket(); CWnd* m_pParentWnd; virtual void OnReceive(int nErrorCode);};//////////////监听/////////////////////////////////////////class CListenSocket : public CSocket{public: CListenSocket(); virtual ~CListenSocket(); CWnd* m_pParentWnd; virtual void OnAccept(int nErrorCode);};//////////////客户/////////////////////////////////////////class CClientSocket : public CSocket{public: CClientSocket(); virtual ~CClientSocket();};//sock1.cpp#include "stdafx.h"#include "sock1.h"//////////////服务/////////////////////////////////////////CServerSocket::CServerSocket(){}CServerSocket::~CServerSocket(){}void CServerSocket::OnReceive(int nErrorCode) { char buff[1024]; int nLen = CSocket::Receive(buff,1024); m_pParentWnd->PostMessage (WM_UPDATEMSG,(WPARAM)buff,(LPARAM)nLen); CSocket::OnReceive(nErrorCode); }//////////////监听/////////////////////////////////////////CListenSocket::CListenSocket(){}CListenSocket::~CListenSocket(){}void CListenSocket::OnAccept(int nErrorCode) { CServerSocket* pSocket=new CServerSocket; CSocket::Accept (*pSocket); pSocket->m_pParentWnd=m_pParentWnd; CSocket::OnAccept(nErrorCode);}//////////////客户/////////////////////////////////////////CClientSocket::CClientSocket(){}CClientSocket::~CClientSocket(){}/*////////////使用///////////////////////////////////////////步骤0:包含头文件#include "sock1.h"//步骤1:定义监听,客户变量CListenSocket m_ListenSocket;CClientSocket m_ClientSocket;//步骤2:开始监听m_ListenSocket.Close();if(m_ListenSocket.Create(1500)){ m_ListenSocket.Listen(); m_ListenSocket.m_pParentWnd=this;}//步骤3:客户连接服务m_ClientSocket.Close();m_ClientSocket.Create();if(m_ClientSocket.Connect("127.0.0.1",1500)){ AfxMessageBox("联机成功!");}//步骤4:发送数据m_ClientSocket.Send(str,str.GetLength());//步骤5:消息响应LRESULT XXX::DefWindowProc(UINT message, WPARAM wParam, LPARAM lParam) { switch(message) { case WM_UPDATEMSG: // Pmsg((char*)wParam,(int)lParam); AfxMessageBox(CString((char*)wParam)); default: break; } return XXX::DefWindowProc(message, wParam, lParam);}/*//////////////////////////////////////////////是不是这个。。!对不 这个太复杂啦 vs2008中有一个socket控件 很简单的 你可以用下 谁在程序界面中做过类似于word的标尺,固定在窗口顶部及左边 文件创建问题 第六章:初次抉择 谁能给个提示 誰能講講const的詳細用法? 我用VS.net 生成一个安装程序,在里边使用自定义对话框,我想出现一个文本框,输入密码,可我怎么也找不到如何设置文本框的密码属性。 IOCP 和 Select客户端 客户端只能发不能收? 如下代码编译时出现警告,怎么回事啊?求指教 从一个类调用其它类的程序如何写? 如何操作ini文件,在vc中。 vc编译、运行黑屏问题一个原因 请教CStdioFile readstring的问题.
#define WM_UPDATEMSG WM_USER+100
//////////////服务/////////////////////////////////////////
class CServerSocket : public CSocket
{
public:
CServerSocket();
virtual ~CServerSocket();
CWnd* m_pParentWnd;
virtual void OnReceive(int nErrorCode);
};
//////////////监听/////////////////////////////////////////
class CListenSocket : public CSocket
{
public:
CListenSocket();
virtual ~CListenSocket();
CWnd* m_pParentWnd;
virtual void OnAccept(int nErrorCode);
};
//////////////客户/////////////////////////////////////////
class CClientSocket : public CSocket
{
public:
CClientSocket();
virtual ~CClientSocket();
};//sock1.cpp
#include "stdafx.h"
#include "sock1.h"
//////////////服务/////////////////////////////////////////
CServerSocket::CServerSocket()
{
}
CServerSocket::~CServerSocket()
{
}
void CServerSocket::OnReceive(int nErrorCode)
{
char buff[1024];
int nLen = CSocket::Receive(buff,1024);
m_pParentWnd->PostMessage (WM_UPDATEMSG,(WPARAM)buff,(LPARAM)nLen);
CSocket::OnReceive(nErrorCode);
}
//////////////监听/////////////////////////////////////////
CListenSocket::CListenSocket()
{
}
CListenSocket::~CListenSocket()
{
}
void CListenSocket::OnAccept(int nErrorCode)
{
CServerSocket* pSocket=new CServerSocket;
CSocket::Accept (*pSocket);
pSocket->m_pParentWnd=m_pParentWnd; CSocket::OnAccept(nErrorCode);
}
//////////////客户/////////////////////////////////////////
CClientSocket::CClientSocket()
{
}
CClientSocket::~CClientSocket()
{
}/*////////////使用/////////////////////////////////////////
//步骤0:包含头文件
#include "sock1.h"
//步骤1:定义监听,客户变量
CListenSocket m_ListenSocket;
CClientSocket m_ClientSocket;
//步骤2:开始监听
m_ListenSocket.Close();
if(m_ListenSocket.Create(1500))
{
m_ListenSocket.Listen();
m_ListenSocket.m_pParentWnd=this;
}
//步骤3:客户连接服务
m_ClientSocket.Close();
m_ClientSocket.Create();
if(m_ClientSocket.Connect("127.0.0.1",1500))
{
AfxMessageBox("联机成功!");
}
//步骤4:发送数据
m_ClientSocket.Send(str,str.GetLength());
//步骤5:消息响应
LRESULT XXX::DefWindowProc(UINT message, WPARAM wParam, LPARAM lParam)
{
switch(message)
{
case WM_UPDATEMSG:
// Pmsg((char*)wParam,(int)lParam);
AfxMessageBox(CString((char*)wParam));
default:
break;
}
return XXX::DefWindowProc(message, wParam, lParam);
}
/*//////////////////////////////////////////////
是不是这个。。!对不