客户端:
(1)打开VC6.0,新建工程
(图一)
(2)Projects——>MFC AppWizard[exe]——>Project name(给客户端取个工程名)——>OK
(图二)
(3)选Dialog based——>Next
(图三)
(4)注意勾选Windows Sockets——>Next——>Finsh
(图四)
(5)现在就可以看到如下界面了,MFC最基本界面,自己点点右面的工具条,基本功能都能懂了。我们本次就用及 三个按钮。
(图五)
(6)运用那三个按钮先编出,我们需要的基本界面如下(这是个最简单的,应适当扩展)。
(图六)
(7)在界面上点右键,ClassWizard,看到如下界面,在Member Variables中给成员变量命名,我们对输入框的内容命名为m_name.
(图七)
(8)现在编译下,运行就能看到我们编好的对话框,可以输入内容,但是现在没有任何功能
(图八)
(9)我们现在来添加功能,把运行的这个窗口关闭,回到我们的编辑页面,我们以提交按钮为例,双击提交按钮弹出
(图九)
Member function name 可改可不改,直接点击OK,然后会自动弹到按钮功能编辑的地方
(图十)
我们就在此添加按钮的功能,在此添加
UpdateData(TRUE); //更新控件值, 参数为FALSE时,用控件值更新窗口显示
MessageBox(m_name);//弹出消息对话框
关于重置按钮的功能如法炮制,不在啰嗦。
好了,现在编译下,我们最初步的就完成了。运行看看:
(图十一)
好了,到这里编的MFC界面窗口就好了。
现在来给提交按钮添加Socket代码(这里有一些逻辑上的问题,这个应该是在服务器端,设置好以后再设置的,可以在看过服务器篇后再回过头来看,就容易理解了)。
继续进入提交按钮功能编辑的地方,加入如下代码:
CSocket socket;
socket.Create();
socket.Connect("192.168.18.58",6688);
//CString strxml=_T("<login><comm>1</comm><truecode>ZA88</truecode><loginno>张三</loginno><loginpwd>123456</loginpwd></login>");
socket.Send("this is client",1024);//发送数据
char str[1024]={0};//如果不初始化会出现乱码问题
socket.Receive(str,1024);//接收数据
AfxMessageBox(str);
socket.Close();
(图十二)
好了,这样就实现了将客户端,数据发送到服务器端的功能。
服务器端:现在我们来构架服务器端
(1)再打开一个VC6.0,重复客户端1-5步,建议一个新的工程server。
(2)如图进入Class View
(图十三)
(3)在Server classes 上点右键——>New Clsass——>Base class 选CSocket,Name取名CListenSocket——>OK;入法炮制再建立一个CRWSocket
(图十四)
(图十五)
(图十六)
(4)现在就得到图十六那样,在CServerDlg上双击进入代码编辑页,如下图加入两行代码:
(5)现在双击OnInitDialog[],进入相应编辑页,找到 // TODO: Add extra initialization here 在后面加入如下代码:
m_listen.Create(8888);
m_listen.Listen();
(6)分别进入我们刚才所建的两个新类CListenSocket和CRWSocket中,右击——>ClassWizard,分别如下建立子类OnAccept(int nErrorCode)和OnReceive(int nErrorCode)。
(7)双击OnAccept(int nErrorCode)进入相关编辑页面,找到// TODO: Add your specialized code here and/or call the base class在下面加入如下代码:
CRWSocket *dataSocket;
dataSocket=new CRWSocket;
Accept(*dataSocket);
编译,发现好多错误,原因是没加头文件,现在加入CRWSocket的头文件#include "RWSocket.h",好了现在编译,发现全都对了。
同样的在OnReceive(int nErrorCode)里,加入如下代码:
char str[8];
Receive(str,8);//接收数据
AfxMessageBox(str);
CString comback="this is service";
Send(comback,comback.GetLength());//发送数据
(8)编译下,好了,现在基本已经大功告成,运行下试试,我们先运行服务器端,在运行客户端,然后再客户端输入信息,提交,发现服务器端收到了消息。