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

UDP发送自定义结构体?

楼主richson(雪山飞狐)2004-05-01 01:09:43 在 VC/MFC / 网络编程 提问

我用UDP客户端与服务器发送字符串可以,为什么不能发送自定义的结构体? 问题点数:0、回复次数:10Top

1 楼wangle11111(wangle)回复于 2004-05-01 01:14:02 得分 0

最好贴出代码   ,让大家找找错误。Top

2 楼yhqs540(Reich)回复于 2004-05-01 20:28:44 得分 0

可以发送,  
  以太网数据贞结构    
  14byte(以太网头)+20byte(ip头)+8byte(udp头)+你要发送的数据+4byte   crc  
  你可以把结构体用memcpy复制到缓冲区Top

3 楼newlili(神啊,救救我吧!)回复于 2004-05-02 00:30:27 得分 0

把一个结构用memcpy填充到一个char*   buf中。再发。在接收端也要有这个结构,结构应该是一模一样的,再转一下就OK了!Top

4 楼BitBlt(Raster Operater)回复于 2004-05-02 00:32:19 得分 0

转化为stream发送,加上个什么标记,接受端再把他还原出来。Top

5 楼zpjsj2000(zpjsj)回复于 2004-05-05 17:18:13 得分 0

http://expert.csdn.net/Expert/topic/3029/3029433.xml?temp=.8681147Top

6 楼szclm(IT的民工)回复于 2004-05-05 17:33:15 得分 0

发送一个结构体是一定可以的!  
   
  如果,你的结构体是一群指针!那你就要重新组合一下这个结构体的信息!  
  不然,发过去一串指针是没有意义的!  
  Top

7 楼simouse()回复于 2004-05-05 20:43:17 得分 0

发送  
  CSocket   s;  
  s.Create(0,SOCK_DGRAM);  
   
   
  int     nLen   =   sizeof(m_nNo)   +   sizeof(DATA);  
   
  DATA   data;  
  data.Id   =   m_nNo;  
  strcpy(data.str,m_strString);  
   
  char   *p   =   new   char[nLen];  
  char   *pInt   =   (char*)&m_nNo;  
  char   *pData=   (char*)&data;  
   
  for   (int   i=0;i<4;i++)  
  *p++   =   *pInt++;  
  for   (i=0;i<sizeof(DATA);i++)  
  *p++   =   *pData++;  
   
  p   -=   nLen;    
   
   
  TRACE("Send:%d,%s\n",m_nNo,m_strString);  
  TRACE("Total:%d   Bytes\n",nLen);  
  s.SendTo(p,nLen,5000,"192.168.0.255");  
   
  delete   []p;  
   
   
   
   
   
  接收  
  char   buffer[1024];  
  CString   strIP;  
  UINT         nPort;  
  int   nLen   =   ReceiveFrom(buffer,1024,strIP,nPort);  
   
  TRACE("Receive   %d   Bytes\n",nLen);  
   
  char   str1[sizeof(int)];  
  char   *pdata   =   new   char[nLen   -   sizeof(int)];  
  int   index   =   0;  
   
  for   (int   i=0;i<sizeof(int);i++)  
  str1[i]   =   buffer[index++];  
   
  for(i=0;i<nLen-sizeof(int);i++)  
  *pdata++   =   buffer[index++];  
   
  pdata   -=   (nLen-sizeof(int));  
  DATA   *data   =   (DATA*)pdata;  
   
  CString   str;  
  str.Format("Int:%d     Id:%d     String:%s",*((int*)str1),data->Id,data->str);  
  m_pList->AddString(str);  
   
   
  delete   []pdata;  
   
  Top

8 楼cheeralen(嵌入式)回复于 2004-05-05 22:44:03 得分 0

gzTop

9 楼sharkhuang(走吧走吧!人总会慢慢长大~)回复于 2004-05-06 10:55:17 得分 0

串行华就可以了Top

10 楼simouse()回复于 2004-05-07 19:06:14 得分 0

仔细看看我发的代码,你可以把所有结构放到一个缓冲区里发过去,收到时可能用第一个int的值来区分结构类型,再把结构的指针提出来就行了。Top

相关问题

  • 如何调动自定义结构体
  • evb里面如何自定义结构
  • 自定义结构的复制
  • Com如何导出自定义结构
  • 存储自定义结构出错
  • 问一个很有价值的问题:如何实现在winsock中发送自定义结构?
  • 自定义消息如何发送?
  • 如何CDocument发送自定义消息??
  • 怎么操作webservice中自定义函数返回的自定义结构?
  • 自定义结构体中的数组怎么自定义声明

关键词

  • 结构
  • 指针
  • 发送
  • nno
  • udp
  • 头
  • byte
  • str
  • char
  • data

得分解答快速导航

  • 帖主:richson

相关链接

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

广告也精彩

反馈

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