A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 申延超 中级黑马   /  2012-12-1 15:59  /  1876 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 申延超 于 2012-12-10 18:01 编辑
  1. string ip = skt.ToString();//将传过来的参数转为string类型
  2.             while (true)
  3.             {
  4.                 byte[] resXiaoXi = new byte[1024 * 1024 * 2];//定义个byte数组存接收的数据
  5.                 int length = dicSock[ip].Receive(resXiaoXi);//将要接收的数据写入byte数组中,并得到接收的数据的长度
  6.                 if (resXiaoXi[0] == 0)//判断发送过来的数据是文件还是文字,0代表文字,1代表文件
  7.                 {
  8.                     string msg = System.Text.Encoding.Default.GetString(resXiaoXi, 1, length-1);//将接收的数组转为string类型
  9.                     ShowMSG(msg + "来自" + ip);
  10.                 }
  11.                 else if (resXiaoXi[0] == 1)
  12.                 {
  13.                     SaveFileDialog sfd = new SaveFileDialog();
  14.                     if(sfd.ShowDialog()== System.Windows.Forms.DialogResult.OK)
  15.                     {
  16.                         string fileSavePath = sfd.FileName;//获去要保存位置的路径
  17.                         using (FileStream fs = new FileStream(fileSavePath, FileMode.Create)) //创建文件流,让文件流根据路径创建一个文件
  18.                         {
  19.                             fs.Write(resXiaoXi, 1, length - 1);//将数据写入到创建的文件中
  20.                             ShowMSG("文件保存成功:" + fileSavePath + "来自" + ip);
  21.                         }
复制代码
这是聊天室那块服务端接收文字和文件那段的代码,可我从客户端发送个文件过去,服务端并不弹出文件保存框,设断点调试,程序执行
SaveFileDialog sfd = new SaveFileDialog();这行就运行不下去了,也不抛异常,然后百度得到结果说是XP和win7编程差异问题,让在
Thread thr = new Thread(rec);new线程后加上 thr.SetApartmentState(ApartmentState.STA); 添加后正常弹出。
麻烦亲们帮忙具体解释下,或者说还有没有别的方法,谢谢!

评分

参与人数 1技术分 +1 收起 理由
古银平 + 1 神马都是浮云

查看全部评分

1 个回复

倒序浏览
在网上找到这个资料http://www.soaspx.com/dotnet/csharp/csharp_20100424_3981.html
估计已经解释的很详细了,但是超出了我的理解范畴,你琢磨一下吧
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马