在Visual Studio98的Samples中有一个HttpSvr程序,这是一个简单的Web服务器,你可以仔细的研究它一下,一定会获得很多收获。
解决方案 »
- 出现了debug assertion failed错误
- 为什么DEBUG下的EXE一闪而过
- 最近遇到一个怪问题 各位达人帮忙解释一下
- c++primer中的一道题
- 有关CByteArray的问题?
- Edit如何隐藏?
- 想找 installshield 最新版本的电子版教程(中文),请各位帮帮忙
- 如何获得当前运行程序的一些对象
- MFC Combo box 问题
- 应聘完之后如果主考官说:“等我们的消息吧。”之类的话是不是就等于没戏了?
- 那位仁兄能给我一个写工程文挡的规范?简单模板也行!!
- 请问谁有《MFC开发Windows95/NT4应用程序》配套CDROM? my e_mail [email protected]
如果希望研究,我觉得 Samples中的chat 是直接使用CSocket的,更好一些。
OnAccept() 事件,而 CAsyncSocket 默认就能响应所有事件。
CSocket sockSrvr,CSocket sockSrecv.
sockSrvr.Create(nPort),sockSrvr.Listen(),sockSrvr.Accept(sockrecv),这样就只要客户连接过来,服务端就可以接收到了。当然,你也可以从CAsyncSocket派生类来生成自己的SOCKET,具体使用可以参考MSDN中的CHAT程序。
Server->Create(SrvPort)->Listen()->Accept()->Receive()
Client->Create()->Connect(SrvIP,SrvPort)->Send(Buf,len,...)
请不妨试一试?
Client端发送:
CSocket *mysock=new CSocket();
if (!mysock->Create(0,SOCK_STREAM,NULL))
{
return FALSE;
}
if (!mysock->Connect(ServerIp,ServerPort))
return FALSE;
if (!mysock->Send(SendBuf,SendLen,0))
{
return FALSE;
}
Client端接收
mysock->Receive(RcvBuf,MaxLen,0);以上代码摘自我公司的一个产品,中间环节不便透露,仅提供主要部分。详情请看CSocket类的介绍
OnAccept()没有被调用,必然内部有错误,你需要逐步检查Create,Listen,Connect等调用是否成功。OnAccept()未调用,客户端Connect()必然失败,调用GetLastError()查看一下错误原因。
错误原因一般如下:
1、未调用AfxSocketInit()
2、用127.*.*.*作地址本地模拟网络,WIN98以网络客户模式登录,Listen()会失败
3、服务器端口已被其它socket使用,Create(nPort)会失败
2、用127.*.*.*作地址本地模拟网络,WIN98以网络客户模式登录,Create()会失败
lionpb回答的很详细,但连接后应该双方都可以Send()/Receive()吧。