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

这是wxWidgets论坛的中文版本。在这里,您可以用您的母语汉语讨论上面任一子论坛所涉及的所有关于wxWidgets的话题。欢迎大家参与到对有价值的帖子的中英互译工作中来!
Post Reply
hats
Experienced Solver
Experienced Solver
Posts: 70
Joined: Wed Sep 16, 2009 3:50 pm
Location: China
Contact:

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

Post by hats » Wed Dec 29, 2010 6:33 am

一个简单的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*就读取数据,保存为一个文件。
wx2.8.11
Win XP GCC 4.4.1/VC2005
Ubuntu 10.04 GCC 4.4.3

chendongbox
Earned a small fee
Earned a small fee
Posts: 17
Joined: Sun Jan 31, 2010 2:00 pm

Post by chendongbox » Wed Dec 29, 2010 1:46 pm

是不是需要自定义一下标志啊,先发送4byte类型标志与4byte长度标志。

hats
Experienced Solver
Experienced Solver
Posts: 70
Joined: Wed Sep 16, 2009 3:50 pm
Location: China
Contact:

Post by hats » Thu Dec 30, 2010 5:14 am

怎么发送标志呢?发送文件前先发一个数据,说明它是个文件?
wx2.8.11
Win XP GCC 4.4.1/VC2005
Ubuntu 10.04 GCC 4.4.3

hats
Experienced Solver
Experienced Solver
Posts: 70
Joined: Wed Sep 16, 2009 3:50 pm
Location: China
Contact:

Post by hats » Thu Dec 30, 2010 11:18 am

无人..发到英文板块去,看看情况怎么样。
wx2.8.11
Win XP GCC 4.4.1/VC2005
Ubuntu 10.04 GCC 4.4.3

Post Reply