我分别在服务器端和客户端用了TServerSocket和TClientSocket控件,然后想传送一个浮点数组[0,1.33,2.67,4.0,5.33],用的是SendBuff和ReceiveBuff命令,但是客户端总是没有接收到数据,请大虾们看看,到底是哪里的问题,在线等待!!!代码如下:
1)在服务器端ServerSocket1ClientRead事件里,
var
  i,m:Integer;ft_buffer:Array[0..4] of Real;
begin
  for i:=0 to 4 do
    ft_buffer[i]:=i*4/3.0;
  j:=Socket.SendBuf(ft_buffer,sizeof(ft_buffer));
  Showmessage(IntToStr(m));
end;
2) 在客户端的ClientSocket1Read事件里,
var
  j:Integer;
begin
  j:=Socket.ReceiveBuf(rl_buffer,sizeof(rl_buffer)); 
  Showmessage(IntToStr(j));
end;
运行后,服务器端的m总是为40,而客户端的j总是为-1,不知道是什么问题??? 

解决方案 »

  1.   

    对了,补充一句,客户端的rl_buffer我定义成了全局变量。不过这应该没有关系吧,呵呵。
      

  2.   

    不好意思,服务器端代码里m就是j,j就是m,写错了。
      

  3.   

    其实这个程序我换用Socket.sendtext和Socket.receiveText,就运行成功,而用Socket.sendtext和Socket.receiveText就不行,的确很奇怪,难道中间还有什么需要预先定义或是声明的吗?
      

  4.   

    什么意思,没看懂你说的,呵呵 下面的是buf得吧?呵呵
    最好搞成握手方式,
      

  5.   

    不好意思,又写错了。对,前面的传送文本就行,而换做Socket.sendbuf和Socket.receivebuf就运行不正确,不知道是何缘故。
      

  6.   

    这个函数应该如何用呀?linx88(haozi)朋友!给个例子好吗?
      

  7.   

    if j<=0 then 
    messagebox(0,pchar(inttostr(getlasterror)),'ErrorId',mbok);然后可用VC自带工具,Error lookup察看是什么错误(输入getlasterror返回的错误编码)
      

  8.   

    你设置的为noblock,这里面你可以设为block型的就可以了吧。