基于socket的即时通工具,采用c/s模式,文字信息是转化成byte[]然后socket到服务器,服务器再发给客户端,这方面我已经搞定了,类似QQ我想文件也这样搞,想将文件转化成byte[],再走老路子,我想问的第一个问题:文件转化成byte[]后再传,是不是太大,socket支持么?第二个问题是:我想将文件拖拽到聊天框然后点击“发送”,我的聊天框是2个richtextbox,怎么让他识别我拖拽过来的文件呢?
调试欢乐多
RicheTextBox rtb;
rtb.EnableAutoDragDrop = true;
处理DragDrop事件:string[] formats = e.Data.GetFormats();
foreach (string fmt in formats)
{
if (fmt == "FileNameW"){//todo}
}
我的socket类自己已经有了,这个项目很庞大的,我只是将了其中一个小功能(传文件)而已,我不可能为了这个将我的类改成你的类
只要帮我回答一下:
1、socket协议限制文件大小么?限制的话,是多少呢?
2、拖拽的时候,怎么操作呢?(用richtextbox为例说明,我用的是vs2005,只要将文件拖拽到rtb的时候,rtb显示文件的路径+文件名就好)
private void rich_Input_DragDrop(object sender, DragEventArgs e)
{
//用记事本打开并显示在屏幕中
//Array arrayFileName = (Array)e.Data.GetData(DataFormats.FileDrop); //string strFileName = arrayFileName.GetValue(0).ToString(); //StreamReader sr = new StreamReader(strFileName, System.Text.Encoding.Default);
//rich_Input.Text = sr.ReadToEnd();
//sr.Close(); //显示文件的路径名
//Array aryFiles = ((System.Array)e.Data.GetData(DataFormats.FileDrop));
//for (int i = 0; i < aryFiles.Length; i++)
//{
// this.rich_Input.AppendText(aryFiles.GetValue(i).ToString() + Environment.NewLine);
//} }
这是拖拽到richtextbox时触发的事件,我里面现在什么都没写。我现在想要实现:拖拽进去的文件转化成二进制,帮忙在这个事件中添加一点代码
然后怎么转回来?