搞这么麻烦,你用用AsyncSocket。直接把nsstring转换为dsdata然后发送就可以了

解决方案 »

  1.   

    我也不想这么麻烦,但是对方的接口是那样的,对方接收到数据包的时候就是按照那样的字段对应的字节解包分析,然后回传数据的,如果用nsstring,请问字节大小如何处理,还有补零的那个怎么处理呢?
      

  2.   


    我也不想这么麻烦,但是对方的接口是那样的,对方接收到数据包的时候就是按照那样的字段对应的字节解包分析,然后回传数据的,如果用nsstring,请问字节大小如何处理,还有补零的那个怎么处理呢?
      

  3.   


    我也不想这么麻烦,但是对方的接口是那样的,对方接收到数据包的时候就是按照那样的字段对应的字节解包分析,然后回传数据的,如果用nsstring,请问字节大小如何处理,还有补零的那个怎么处理呢?
      

  4.   

    一般变长数据应该放在结构的最后,这样便于第一次读取出除变长数据之外的所有数据,并且前面结构中要给出变长数据的长度以便第二次读取。所以你的结构大概可以这样:
    typedef struct {
      char identifier[8];
      char phonenum[16];
      char password[16];
      int command;
      int sn;
     int crc; 
     int length;//这个长度是指param的长度
      char param[1];
    }udpdata;
    最后还要注意一下字节对齐的问题。
      

  5.   

    接口的字段顺序是定义好了的,andriod已经开发出了对应的app,不能够变了;
    我想知道的是如何将结构体里的数据转换一下能够通过
    [self.sendSocket        sendData:databuf 
                                      toHost:self.hostIP 
                                      port:ServerPort 
                                      withTimeout:-1
                                      tag:senddata->sn];
    发送出去;
    就是sendData:后面那个参数如何用那个结构体构建
      

  6.   

    那个简单:
    struct buf;//假设里面已经填好数据
    NSData *data = [NSData dataWithBytes:&buf length:buf.length];
      

  7.   

    请帮忙看看为什么我无法把udp数据包发送出去?
    部分代码如下:
    待发送的数据databuf,服务器地址:self.hostIP,端口两边都采用同一个ServerPort
    我机子的ip10.10.27.101,在内网中发送udp
    self.sendSocket=[[AsyncUdpSocket alloc] initWithDelegate:self];
    [self.sendSocket setRunLoopModes:[NSArray arrayWithObject:NSRunLoopCommonModes]];
    NSError *error=nil;
    [self.sendSocket bindToAddress:@"10.10.27.101" port:ServerPort error:&error];
    [self.sendSocket receiveWithTimeout:-1 tag:0];
    [self.sendSocket sendData:databuf toHost:self.hostIP port:ServerPort withTimeout:-1 tag:senddata->sn];
      

  8.   

    你好。 我在做socket 通讯的时候遇到了跟你一样的问题,你后面是怎么解决的。 可以麻烦给指条路嘛?
    QQ 416599267