福州市纪检委书记:CSocket网络编程

来源:百度文库 编辑:偶看新闻 时间:2024/05/05 03:17:29
CSocket网络编程2007年05月07日 星期一 上午 00:51

CSocket网络编程

//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);
}
/*//////////////////////////////////////////////