读书人

请问TcpServer1.Accept接受有关问题!

发布时间: 2012-05-22 18:18:54 作者: rapoo

请教TcpServer1.Accept接受问题!如何使用ClientSocket.ReceiveBuf()显示啊在线等
由于s:=ClientSocket.Receiveln;是接受字符串的,对方发过来的是流,请问用ClientSocket.ReceiveBuf()怎么显示的,如何使用,详细点!谢谢

[解决办法]
ClientSocket.ReceiveBuf()意识是从win32 socket的缓冲中读取数据,数据存储的buffer自己制定,读多少字节自己指定,但不一定读到你指定的字节,要看缓冲是否有,可以通过返回值指定。读完后就可以自由处理了。多看看TCP/IP编程方面的资料。
[解决办法]
帮你写个Demo,同一个工程,既是服务器又是客户端,自己在设计期设置IP+端口
可能不是你要的结果,但自己可以根据此思路改成合适的,道理都是一样

Delphi(Pascal) code
{f是内存流全局变量}var  f:TMemoryStream;{接收,并显示内存在Memo1中}procedure TForm1.TcpServer1Accept(Sender: TObject;  ClientSocket: TCustomIpClient);begin  ClientSocket.ReceiveBuf(f,Sizeof(f));  Memo1.Lines.LoadFromStream(f);end;{内存流读入数据,并发送}procedure TForm1.Button2Click(Sender: TObject);begin  f.LoadFromFile('D:\1.xml');  TcpClient1.SendBuf(f,Sizeof(f));end;{打开Socket}procedure TForm1.Button1Click(Sender: TObject);begin  TcpServer1.Active:=True;  TcpClient1.Active:=True;end;{创建内存流}procedure TForm1.FormCreate(Sender: TObject);begin  f:=TMemoryStream.Create;end;{关闭Socket和释放内存流}procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);begin  TcpClient1.Active:=False;  TcpServer1.Active:=False;  f.Free;end; 

读书人网 >.NET

热点推荐