如何在TCP中发送中文?(50分)

Z

zzz

Unregistered / Unconfirmed
GUEST, unregistred user!
用TCP控件编程,在一端SendData('中文'),另一端GetData时发现是乱码,
如何是好?
 
用sendbuf试试
 
你说的是Socket方法中的调用,Socket是TCP上层的应用,我是想在TCP上建立自己
的应用(我有一套自己的协议),所以只能调用TCP的SendData方法。
 
GetData得到的数据不一定和发送的数据在同样的地方分界:

SendData('1234567');

GetData may return '1234'in first time,
and '567' in the next time
 
因为TCP是个管道,因此不能用指定最大缓冲的方法来读取数据,如
GetData(buf,VT_BSTR,1024)
我的读取方法是逐字节来读
GetData(buf,VT_BSTR,1)
读到自定义的包结束符(如Chr(13)),就结束。这样取西文和数字
都没有问题,中文就不行了。
现在用的办法是在报文前加一个描述中文字符长度的标识,如
SendData('R,17,前置机1状态良好!')
服务器端读取到17后,再
GetData(buf,VT_BSTR,17)

不知道还有更好的办法没有?

 
// Agree with zzz. My comment is the same meaning.
 
把收到的数据都放到一个Buffer中,断开的地方不就连起来了?
另外,收的时候可以判断是不是汉字的一半,以作处理。
 
有一个非常简单的控件,根本没有这个问题。
虽然这个控件很小,但我也不知怎么发给你。
 
你先用MIME编码,然后在发,接收端解码.
MIME控件Delphi4提供
 
用类似uudecode和uuencode的方法一定可以.
 
u can use TCP as the base protocol, u also can use ur own protocol up the TCP
 
多人接受答案了。
 
顶部