我使用的是TServerSocket 和TClientSocket,思路是,对于简单的信息,现在只使用SendText发送,ReceiveText来接收,
对于复杂的信息(放在结构体中),使用SendBuf发送,用ReceiveText接收,但我不知道如何分开接收,
望高手赐教!
急!
------解决方案--------------------
服务器端和客户端通信要采用一定的“协议”,即采用一问一答的通信模式,才能保证较安全的传输数据,在约定好了后按照情况使用Send、Receive的相关函数。
------解决方案--------------------
自己做个协议
表示接收的什么数据,然后根据协议去解析
------解决方案--------------------
我以前做的一个远程控制的小软件都使用SendBuf,一般第一部分是控制结构,后面跟扩展,如果有文本从里面抽取出来就可以了
------解决方案--------------------
- Delphi(Pascal) code
//这个时候vcl source code 是王道! function TCustomWinSocket.ReceiveText: string; begin SetLength(Result, ReceiveBuf(Pointer(nil)^, -1)); SetLength(Result, ReceiveBuf(Pointer(Result)^, Length(Result))); end; {第一次取得长度,第二次取得数据}
------解决方案--------------------
一问一答制,发送方和接收方约定好第一个DWORD值(也就是4个字节)为后面缓冲的长度,然后根据这个长度读取相应长度的内容就行了。后面的数据可以根据需要加密。