TMemoryStream又不是一种特别的类型,接收并不需要一定要用Stream之类的东西.如果接收端采用阻塞方式就用TWinSocketStream读.
如果接收端采用非阻塞方式就用ReceiveBuf 或ReceiveText读就是了.

解决方案 »

  1.   

    可是我发送的时BMP图片和DOC文档,用receiceText怎么读出来阿。如果用receivebuf 请问怎么读出来,然后存放到一个内存流中去.不深感激
      

  2.   

    建议你自己约定一个传输数据的结构,比如这样定义:
    消息头:  sig   int  //
             Size   int  //消息体长度
    消息体:   (长度由Size决定)按照上面约定,可以下面这样
    var 
      S:string;
      mstream:TMemoryStream;
      Sig:Integer;
      Size:Integer;
      
    ...
    mstream:=TMemoryStream.Create;
    Socket.ReceiveBuf(Sig,4); //读出消息分类标志
    Socket.ReceiveBuf(Size,4); //读出消息体长度
    SetLength(S,Size);
    S:=Socket.ReceiveBuf(pchar(S)^,Size);//读出消息体...
    //如果要存入内存流
    mstream.write(pchar(S)^,length(S));关于socket 的可以看看我的贴子
    http://www.csdn.net/develop/read_article.asp?id=10952
    http://www.csdn.net/develop/read_article.asp?id=11423
      

  3.   

    哦.上面这儿写错了.
    S:=Socket.ReceiveBuf(pchar(S)^,Size);//读出消息体
    应该是
    Socket.ReceiveBuf(pchar(S)^,Size);//读出消息体