当前位置:首页
开发技术指南» 文章正文
    引言:
 

 

 ·如何从属性中退出    »显示摘要«
    摘要: 代码如下, public class bb { private string _aa; private string aa { set { if (value == _aa) { break; } _aa = value; } } } 错误如下: 没有要中断或继续的封闭循环 ......
    摘要: 我在坛子上看到做共享,说他们接受代理的电汇都用的是visa卡。今天我打电话问了一下招行的小姐,她说普通招行卡也可以接收国外汇入,只要填写好一些信息即可,是这么会事吗? ......


只能自己发送数据,给另外的计算机发送,为何对方接受不全,请高手指点(SOCKET, VC6++),绝对有分

发送端:  
                  struct   Protocol{                   //自定义协议结构  
                    ......  
                    DWORD   sqnum;               //流水号  
  .....;         //length+sqnum+data的校验和  
                  struct     CommonFrame   data;                 //数据  
                };  
                 
                struct   CommonFrame{                         //在客户端发送的数据帧  
                  ..........                            
  char   *buffer;  
                  ........  
                  };  
             
                  int   end=0;  
                    char   m_buff[500];  
  char   send_buff[500];  
   
                  Protocol   protocol_send;  
    DWORD   i,packageID;  
                    i=0;  
                  strcpy   (m_buff,pDlg->m_MsgSend);(m_MsgSend为对话框输入的字符串)  
  memcpy   (send_buff,   m_buff,500);  
                  protocol_send.data.buffer=send_buff;  
  packageID=i+2;                       //流水号从2开始  
      protocol_send.sqnum=packageID;//发送数据包中的流水号  
  end=sockClient.Send(&protocol_send,sizeof(protocol_send));  
          DWORD   RecvID;  
           
  sockClient.Receive(&RecvID,sizeof(RecvID));  
  if   (RecvID==packageID)  
  {  
      AfxMessageBox("对方收到此数据包");  
    continue;  
  }  
                    .................  
   
  接受端:  
                  .................  
  Protocol   protocol_recv;    
                    int   ret=0;  
                      ret=recSo.Receive(&protocol_recv,sizeof(protocol_recv));  
        if(ret==0)  
        {  
    AfxMessageBox("没收到数据");  
        }  
          DWORD   packageid;  
  packageid=protocol_recv.sqnum;   //收到数据包的流水号  
   
      recSo.Send(&packageid,sizeof(packageid));  
                          ...........  
            对话框输入的字符串不能在不同计算机的接受端显示,sqnum   则可以查到其值,  
      请高手指点!小弟才学SOCKET,此问题捆饶多天,自己实在不能......

NO.1   作者: gxjun

end=sockClient.Send(&protocol_send,sizeof(protocol_send));  
  中的sizeof(protocol_send)并没有包括你实际要发送的数据m_buff的大小,它只包含了一个指针的大小。要将你要发送的实际数据包含在数据包中。可以改结构体CommonFrame的定义,如:  
            struct   CommonFrame{                         //在客户端发送的数据帧  
                  ..........                            
  char   buffer[500];  
                  ........  
                  };  
             
  memcpy   (protocol_send.data.buffer,   m_buff,500);  
  然后发送就OK了。  
 

NO.2   作者: wisemanboy

一定要在结构体里面定义一个数据区的长度,否则就会出错的,当然像上面这样做也是可以的  
  不过最大长度就被限制了  
  同时你还要注意你的内存块是否在发送前就被释放掉了  
  另一端不接收,有可能是你根本没有把数据发出去,在发的时候数据区已经被释放掉了  
  或者是像上面这样数据区的长度没有计算对  
  我也出了很多这样的错,希望对你有帮助


 ·sql语句,选择相同的。    »显示摘要«
    摘要: table qq 货品分类 货品名称 总价 合计出其中属于同一个货品分类的商品总价。 ......
» 本期热门文章:

©2000-2007 All Rights Reserved. 最佳浏览:1024X768 MSIE