CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
不看会后悔的Windows XP之经验谈 简单快捷DIY实用家庭影院
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  VC/MFC >  网络编程

SOCKET问题,请高手回答!

楼主nous()2004-04-04 10:24:24 在 VC/MFC / 网络编程 提问

我现在在写一个异步的SOCKET软件,是一个对话框模式的仿QQ的东东,现在是我如果要登录,是在初始化主对话框时才调用登录框,而在主窗体中  
  BOOL   CICClientDlg::OnInitDialog()  
  {  
  CDialog::OnInitDialog();  
  TCPBind();  
  UDPBind();  
  ConnectToSer();  
  passlogin=false;  
  //在这里启动登录  
  CLogin   login;  
  int   nResponse   =   login.DoModal();  
   
  if   (nResponse   ==   IDOK)  
  {  
  CString   str1;  
  username=login.m_username;  
  char   buffer[50];  
  password=login.m_password;  
  str1.Format("%8s%5s%32s","#!CTSLOG",username,password);  
  strcpy(buffer,(LPSTR)(LPCTSTR)str1);    
  int   ret;  
  ret=send(tcpSocket,buffer,strlen(buffer),0);  
  if   (ret==0)  
  {  
  ret=send(tcpSocket,buffer,strlen(buffer),0);  
  MessageBox("server   error",NULL,MB_OK);  
  }  
  //怎么才能让程序在这就知道是否通过了验证?  
  }  
  else   if   (nResponse   ==   IDCANCEL)  
  {}  
  }  
  void   CICClientDlg::RecvData()//用来进行数据接收  
  还有一个注册模块,我如何才能知道在点注册后我在主窗体中的接受函数中有通过注册而发回来的信息? 问题点数:100、回复次数:10Top

1 楼worldcup()回复于 2004-04-04 11:49:47 得分 0

由于是异步socket,你在OnReceive()中接收就行了,比如通过了验证server发回'y',否则发回'n'  
  或者在你想确认验证结果的地方调用recv()进行接收Top

2 楼sboom(+-LingCh-+)(爱美人不爱VC)回复于 2004-04-04 11:55:52 得分 0

可以在弄个event,在send之后::WaitForSingleObject(...)限时N秒,如果这段时间能接收到返回的消息就setevent唤醒,通过接受到的消息就知道注册是不是成功了,如果N秒内没唤醒也会自动恢复线程,当做验证失败。Top

3 楼mengdizhaoyan(多一)回复于 2004-04-04 12:48:02 得分 0

比如注册,我点注册按钮后如何来实现检测在主窗体中收到的数据?用计时器?我对VC和SOCKET都不是很熟,请大家解释得详细点Top

4 楼nous()回复于 2004-04-05 08:16:24 得分 0

怎么没人回答呀?Top

5 楼kiluar(kiluar)回复于 2004-04-05 09:33:23 得分 0

我开发过这种软件,我是模仿windows的消息驱动,自己设计的一套通信机制,OnReceive()的时候,我又模仿tcp/ip协议的机制,在返回的信息上加上一个包头,客户端要读取包头后判断服务器所返回的包头是什么消息,然后进行相应的处理。Top

6 楼nous()回复于 2004-04-05 12:58:21 得分 0

呵呵,通信我知道点,用异步模式,我是说如何才能在点注册后,我已把注册信息发往服务器端,而在主窗体那才收消息,我如何得知注册后的信息,比如成功或失败,还有注册后分配的号,然后显示在注册的这个窗体上!Top

7 楼kiluar(kiluar)回复于 2004-04-05 13:25:31 得分 0

这个当然是服务器Send()了信息过来之后,你在Client端用OnReceive()了服务端的信息后,这时候你可以根据情况做处理了,这时候你想把信息反馈给用户的话,你有n种方法选择:  
  1)用AfxMessageBox();  
  2)用Mode式Dialog  
  3)用无Mode式Diagog  
  4)你也可以在原注册窗口上选择  
  注意:其中2)-3)需要有原注册窗口的句柄(或指针)  
  ...Top

8 楼nous()回复于 2004-04-05 14:40:46 得分 0

是啊,所以现在搞不出啊Top

9 楼lihao_ningxia(耗子)回复于 2004-04-05 14:42:33 得分 100

呵呵Top

10 楼lihao_ningxia(耗子)回复于 2004-04-05 14:42:59 得分 0

你把EMAIL发给我吧,我给你!Top

相关问题

  • 请回答
  • 请回答
  • 请mcse回答:
  • 请masterz回答
  • 请求回答!!!!
  • 使用SOCKET的问题。。。高手回答!!!!!
  • InsideDelphi(ID)请回答:
  • 难题,请回答
  • 高手请回答:
  • 徐昕请回答

关键词

  • 注册
  • 服务器
  • 消息
  • 信息
  • socket
  • 主窗体
  • 包头
  • nresponse
  • 接收
  • onreceive

得分解答快速导航

  • 帖主:nous
  • lihao_ningxia

相关链接

  • Visual C++类图书
  • Visual C++类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo