是这样的,我们的机器上有单片机,配置了IP地址,里面有一个serversocket,我用clientsocket发送一段二进制数据过去,它就会回传一些二进制的数据例如我发送 00111 过去,服务器端就回复 11111
问题:
一:我该如何用clientsocket去发送这些二进制的数据给serversocket呢?是用clientsocket1.socket.sendstream()吗?如果是用sendstream()的话,该怎么去表达这00111的二进制数据呢(别人说用 move)?又怎么去接收这二进制的数据回来呢?
二:我接到的二进制数据 00111,我该如何将它变为字符串,然后showmessage()出来,显示的还是 00111呢?(别人说还是用move)比较急,我找了几天的资料了,没一点头绪,因为我是做ERP数据库类型的软件的,第一次做这种通讯类的软件..完全不会,工程部那又天天催,我都快烦死了...在这里谢谢大家了..

解决方案 »

  1.   

    做ERP的, 不知道数据(二进制,字节,字符,地址(指针))等概念, 也说不过去啊
      

  2.   

    楼上的朋友,我不是专门写代码的,主要是做ERP企业流程计设方面的,如果朋友们有空的话,希望能够帮帮我...谢谢!!!
      

  3.   

    clientsocket1.socket.sendbuffer就行了.
    至于二进制,就看你怎么组织了.
    现在一般的协议,都是用结构来组织的.
      

  4.   

    楼上的朋友能不能请举个例子说明?我现在是完全不搞不懂呀...
    例如说,你能不能做一个 Clientsocket和serversokcet的demo,互相发送和接收二进制的数据,然后显示在一个memo内.?(哈哈,不要互发字符串喔,发字符串我还是会的).
    再次谢谢哈!!!!!!!
      

  5.   

    00111 对应的是 7
    var
    str:string;
    begin
      str := #7;//然后发送这个字符串出去就行了  
    end.
      

  6.   

    那就把工作交给程序员吧.或者参考下面贴6楼的回复
    http://topic.csdn.net/u/20081114/11/091305bd-24cf-4c5c-9083-3993e4d98eae.html
      

  7.   

    比如你要发一段二进制数: AA 3F 4E 5Fvar
      arrBuf: array[0..3] of Byte;
    begin
      arrBuf[0] := $AA;
      arrBuf[1] := $3F;
      arrBuf[2] := $4E;
      arrBuf[3] := $5F;  ClientSocket1.Socket.SendBuffer(arrBuf, SizeOf(arrBuf));
    end;再或者复杂点的,
    比如,自定义协议:
      协议头       命令号(1个byte)      命令参数1(2个byte)   数据区长度(4Byte)    数据区内容
      AA         01                  0103               6                   'abcdef'type 
      TCommData = record
        CommHead  : Byte;
        CommID    : Byte;
        CommParam : Word;
        DataLen   : DWORD;
        Data      : array[0..65535] of Char;
      end;var
      CD: TCommData;
      strData: string;
    begin
      strData = 'abcdef';
      CD.CommHead  := $AA;
      CD.CommID    := $01;
      CD.CommParam := &0103;
      CD.DataLen   := 6;
      StrPCopy(CD.Data, strData);  ClientSocket1.Socket.SendBuffer(CD, SizeOf(TCommData));
    end;
      

  8.   

    哈哈,谢谢楼上的朋友们.....
    我在这里找相关贴子,老半天没有找到你发的那张贴,原来直接把标题写成了sendbuffer....
    我明天去公司试试哈.....
    ===========那就把工作交给程序员吧. 
    ===
    回复:我是个死要面子,又要强的人,我答应了人家技术部帮他们搞定.....唉呀..anyway,死要面子活受罪.
      

  9.   

    To 7楼,SendBuffer需要处理返回值.
      

  10.   

    问题一虽然还没测试,但我想应该没有问题了...
    那第二个问题呢?二:我接到的二进制数据 00111,我该如何将它变为字符串,然后showmessage()出来,显示的还是 00111呢?
      

  11.   

    我测试过了....客户端发送到serverclient后,就算serverclient的onclientread内没有任何代码,都会出错...
    出错内容为:  "一把红叉 '?"  这样子....是怎么回事呢?