CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
可用分押宝游戏火热进行中... 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  VC/MFC >  网络编程

UDP发送,接受数据问题!

楼主xeina(亚亚)2004-12-01 10:54:30 在 VC/MFC / 网络编程 提问

1.send的程序  
                  struct   Head   {  
  int   message_len;  
  int   command_num;  
  int   sub_num;  
  int   transact_id;  
  int   serial_num;  
  }   Platform,*pPlatform;  
  CSocket   m_SendSocket;//构造一个套接字对象  
   
          //发送数据的初始化  
  Platform.command_num   =   201;  
  Platform.sub_num   =   0;  
  Platform.serial_num   =   0;  
  Platform.transact_id   =   12;  
  Platform.message_len   =   sizeof(Platform);  
  pPlatform=&Platform;  
   
  //数据发送  
  m_SendSocket.Create(2330,SOCK_DGRAM);//创建一个套接字句柄(UDP)  
  m_SendSocket.SendTo(   pPlatform,sizeof(Platform),3550,"192.168.0.16");  
   
   
  receive的程序  
                    Head   *pPlatform1;  
  CSocket   m_ReceiveSocket;  
  char   *buff1[256];  
  CString   str1;  
   
   
  //接收数据  
  m_ReceiveSocket.Create(3550,SOCK_DGRAM);  
   
  while(1)  
  {  
  if(m_ReceiveSocket.Receive(buff1,256)==SOCKET_ERROR)  
  {  
  AfxMessageBox("sockerror");  
  continue   ;  
  }  
  else                                                          
  {  
                          struct   Head*   pPlatform1   =   (struct   Head*)buff1;//智能机请求  
  str1.Format("%d",pPlatform1->command_num);  
  AfxMessageBox(str1);  
                                        }  
                }  
   
  现在的程序可以发送,也可以接受  
  我想在receive成功接受到数据后,返回给send已经接受到数据  
  在send写一个接收的程序,接收receive发过来的数据  
   
  我直接在receive接到str1后  
  直接 m_SendSocket.Create(2330,SOCK_DGRAM);//创建一个套接字句柄(UDP)  
  m_SendSocket.SendTo(   str1,sizeof(str1),3550,"192.168.0.16");  
  程序就运行有错?  
  为什么呢?该怎么做呢? 问题点数:50、回复次数:9Top

1 楼Caps77(厉兵秣马)回复于 2004-12-01 11:08:55 得分 40

void   GetError()  
  {  
  LPTSTR   lpMsgBuf;  
  FormatMessage(    
  FORMAT_MESSAGE_ALLOCATE_BUFFER   |    
  FORMAT_MESSAGE_FROM_SYSTEM   |    
  FORMAT_MESSAGE_IGNORE_INSERTS,  
  NULL,  
  GetLastError(),  
  MAKELANGID(LANG_NEUTRAL,   SUBLANG_DEFAULT),   //   Default   language  
  (LPTSTR)   &lpMsgBuf,  
  0,  
  NULL    
  );  
  MessageBox(NULL,lpMsgBuf,"ERROR",MB_OK);  
  LocalFree(   lpMsgBuf   );  
  }  
   
  发送2次数据后  
  GetError();  
   
  同时在接收2次数据后也  
  GetError()  
   
   
  一下,看看提示什么错误Top

2 楼xeina(亚亚)回复于 2004-12-01 11:09:23 得分 0

我定义了CSocket   m_SendSocket;Top

3 楼freeshoot(巴蒂刘)回复于 2004-12-01 11:13:29 得分 10

问题就出在:  
  m_SendSocket.SendTo(   str1,sizeof(str1),3550,"192.168.0.16");  
   
  str1是指针否?如果是,那sizeof(str1)就会等于4。Top

4 楼xeina(亚亚)回复于 2004-12-01 11:16:08 得分 0

我把str1换成pPlatform1也不对啊,运行的时候也有错啊Top

5 楼xeina(亚亚)回复于 2004-12-01 11:23:10 得分 0

加了GetError()  
  第一次是操作成功完成,  
  第二次是Detected   memory   leaks!  
  ....  
  ....  
  ....  
  ....  
  Object   dump   complete.  
  The   thread   0xA88   has   exited   with   code   3   (0x3).  
  The   program   'E:\ParkClient\ParkClient\Debug\ParkClient.exe'   has   exited   with   code   3   (0x3).Top

6 楼xeina(亚亚)回复于 2004-12-01 11:24:30 得分 0

m_SendSocket.Create(2330,SOCK_DGRAM);//创建一个套接字句柄(UDP)  
  m_SendSocket.SendTo(   pPlatform1,sizeof(pPlatform1),3550,"192.168.0.16");  
  GetError();Top

7 楼freeshoot(巴蒂刘)回复于 2004-12-01 13:44:54 得分 0

m_SendSocket.SendTo(pPlatform1,   sizeof(pPlatform1)....)  
   
  你想想,前两个参数应该是发送数据指针和发送的数据长度,怎么能这样用?  
  楼主太粗心。Top

8 楼xeina(亚亚)回复于 2004-12-01 14:06:09 得分 0

我的问题解决了,谢谢各位了!Top

9 楼littleline()回复于 2004-12-01 14:08:20 得分 0

sendto()看msdnTop

相关问题

  • UDP非阻塞状态接受数据
  • UDP的数据包发送问题?
  • 如何用udp发送和接受?
  • udp传输大块数据的问题,无法接受全部数据。
  • udp传输大块数据的问题,无法接受全部数据。
  • 如何在C#中基于UDP/IP协议接受数据包
  • 在windows下怎么发送一个UDP数据包?
  • 如何用指定端口号发送UDP数据包?
  • 一个通过Socks5代理发送UDP数据的类
  • 用UDP发送接收数据包需要几个端口?

关键词

  • 数据
  • pplatform
  • sendsocket
  • parkclient
  • platform
  • receivesocket
  • 发送
  • dgram
  • udp
  • sendto

得分解答快速导航

  • 帖主:xeina
  • Caps77
  • freeshoot

相关链接

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

广告也精彩

反馈

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