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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

是套接字发送文件
客户端代码为
private void btnchoosefile_Click(object sender, EventArgs e)//选择文件按钮
        {
            OpenFileDialog ofd = new OpenFileDialog();
            if (ofd.ShowDialog() == System.Windows.Forms.DialogResult.OK)
            {
                textsendfilename.Text = ofd.FileName;

            
            
            
            }
        }

        private void btnsendfile_Click(object sender, EventArgs e)//发送文件按钮
        {
            using(FileStream fs=new FileStream(textsendfilename.Text,FileMode.Open ))
            {


                byte[] arrfile = new byte[102 * 1024 * 2];
                int length = fs.Read(arrfile, 0, arrfile.Length);
                byte[] newarrfile = new byte[length + 1];
                newarrfile[0] = 1;
                Buffer.BlockCopy(arrfile, 0, newarrfile, 1, length);
                connection.Send(newarrfile);
            
            
            
            
            
            }
        }

服务端判断是否是文件
void RecMsg(object socket)
        {
            while (true)
            {
                Socket soket1 = socket as Socket;
               
                   byte[] bytes = new byte[1024 * 1024 * 2];

                   int length = soket1.Receive(bytes);
                   if (bytes[0] == 1)
                   {
                       SaveFileDialog sfd = new SaveFileDialog();
                       if (sfd.ShowDialog() == System.Windows.Forms.DialogResult.OK)
                       {

                           string filesavepath = sfd.FileName;
                           using (FileStream fs = new FileStream(filesavepath, FileMode.Create))
                           {
                               fs.Write(bytes, 1, length - 1);

                               ShowMsg("保存成功" + "\r\n");


                       }


                       }



                   }

我点客户端选择好文件发送到服务端 没反应 没有报错 不弹出保存文件的选择框 各位同学帮我看看是哪出错了。

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

1 个回复

倒序浏览
connection.Send(newarrfile);//程序中采用的是send方法,该方法是阻塞模式发送数据;
//建议使用异步模式发送,clientsocket对象中有一个beginsend的方法,该方法就是异步发送。

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马