20. 11.

是这样的,我们的机器上有单片机,配置了IP地址,里面有一个serversocket,我用clientsocket发送一段二进制数据过去,它就会回传一些二进制的数据。。。例如我发送 00111 过去,服务器端就回复 11111
问题:
一:我该如何用clientsocket去发送这些二进制的数据给serversocket呢?是用clientsocket1.socket.sendstream()吗?

如果是用sendstream()的话,该怎么去表达这00111的二进制数据呢(别人说用 move)?又怎么去接收这二进制的数据回来呢?
二:我接到的二进制数据 00111,我该如何将它变为字符串,然后showmessage()出来,显示的还是 00111呢?(别人说还是用move)

[color=#FF0000]比较急,我找了几天的资料了,没一点头绪,因为我是做ERP数据库类型的软件的,第一次做这种通讯类的软件..完全不会,工程部那又天天催,我都快烦死了…在这里谢谢大家了..[/color]

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

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

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

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

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

那就把工作交给程序员吧.

或者参考下面贴6楼的回复
http://topic.csdn.net/u/20081114/11/091305bd-24cf-4c5c-9083-3993e4d98eae.html

比如你要发一段二进制数: AA 3F 4E 5F

var
  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;

哈哈,谢谢楼上的朋友们…..
我在这里找相关贴子,老半天没有找到你发的那张贴,原来直接把标题写成了sendbuffer….
我明天去公司试试哈…..
===========

那就把工作交给程序员吧.
===
回复:我是个死要面子,又要强的人,我答应了人家技术部帮他们搞定…..唉呀..anyway,死要面子活受罪.

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

问题一虽然还没测试,但我想应该没有问题了…
那第二个问题呢?

二:我接到的二进制数据 00111,我该如何将它变为字符串,然后showmessage()出来,显示的还是 00111呢?

顶…没人帮我解决了吗?

我测试过了….

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