Page 1 of 1

wxSocket 如何判断接收的数据是文件还是wxChar*

Posted: Wed Dec 29, 2010 6:33 am
by hats
一个简单的wxSocketClient和wxSocketServer.
现在能互相发文本信息,互相传送文件。
发送文本信息的我用的代码如下:

按钮事件 Client::OnButton:

Code: Select all

const wxChar* buf;
wxString text = TextCtrl1->GetValue();//自定义的输入控件
buf = text.c_str();
wxUint32 len = (wxStrlen(buf)+1)*sizeof(wxChar);//要发送数据的长度
clientSocket->Write(buf,len);

向服务器传送文件我用的代码如下:
按钮事件 Client::OnButton:

Code: Select all

wxFile file;
file.Open(wxT("test.txt"),wxFile::read);//读取打开
size_t fileSize = file.Length();//文件大小
wxUint8* buffer = new wxUint8[fileSize];
size_t len = file.Read(buffer,fileSize);//读取指定大小到缓存
clientSocket->Write(buffer,len);//发送
delete []buffer;

wxSocketServer端用wxSocketServer::Read()能读取wxChar*和wxUint8*的数据。
但是服务器如何分辨接收数据类型呢?如果是wxChar*就直接显示,如果是wxUint8*就读取数据,保存为一个文件。

Posted: Wed Dec 29, 2010 1:46 pm
by chendongbox
是不是需要自定义一下标志啊,先发送4byte类型标志与4byte长度标志。

Posted: Thu Dec 30, 2010 5:14 am
by hats
怎么发送标志呢?发送文件前先发一个数据,说明它是个文件?

Posted: Thu Dec 30, 2010 11:18 am
by hats
无人..发到英文板块去,看看情况怎么样。