//发送文件 private void button_file_Click(object sender, EventArgs e) { if (openFileDialog1.ShowDialog() == DialogResult.OK) { string file_name = openFileDialog1.SafeFileName; //文件名 string file_path = openFileDialog1.FileName; //文件全路径 long file_length = new FileInfo(file_path).Length; //以字节为单位 if (file_length > 100 * 1000 * 1000) //超过100M { MessageBox.Show("文件大小不能超过100M", "警告", MessageBoxButtons.OK, MessageBoxIcon.Warning); return; } else if (file_length <= 0) { MessageBox.Show("文件为空!", "警告", MessageBoxButtons.OK, MessageBoxIcon.Warning); return; } Sock_connected.Send_message_NumString(3, file_name); add_msg2list("系统消息", "正在发送文件:" + file_path, Color.Red); byte[] buffer_Chat_send = new byte[1024 * 1024 * 110];//110M缓存 using (FileStream fs = new FileStream(file_path, FileMode.Open, FileAccess.Read)) { int readLength = 0; //bool firstRead = true; //long sentFileLength = 0; readLength = fs.Read(buffer_Chat_send, 0, buffer_Chat_send.Length); Sock_connected.Send_message_NumByte(2, buffer_Chat_send, readLength); /*while ((readLength = fs.Read(buffer_Chat_send, 0, buffer_Chat_send.Length)) > 0 && sentFileLength < file_length) * { * sentFileLength += readLength; * * //第一次发送的字节流上加前缀 * if (firstRead) * { * //第一个字节标记2,代表为文件 * Sock_connected.Send_message_NumByte(2, buffer_Chat_send, readLength); * firstRead = false; * } * Sock_connected.sock.Send(buffer_Chat_send, 0, readLength, SocketFlags.None); * }*/ fs.Close(); } } }
private void button_sendFile_Click(object sender, EventArgs e) { OpenFileDialog openf_d = new OpenFileDialog(); if (openf_d.ShowDialog() == DialogResult.OK) { string file_name = openf_d.SafeFileName; //文件名 string file_path = openf_d.FileName; //文件全路径 long file_length = new FileInfo(file_path).Length; //以字节为单位 if (file_length > 30 * 1000 * 1000) //超过100M { MessageBox.Show("文件大小不能超过30M", "警告", MessageBoxButtons.OK, MessageBoxIcon.Warning); return; } else if (file_length <= 0) { MessageBox.Show("文件为空!", "警告", MessageBoxButtons.OK, MessageBoxIcon.Warning); return; } myFileInfo file_info = new myFileInfo(file_length, file_name); if (!host_flag) { if (fileInfo_list.Exists(x => x == file_info)) { MessageBox.Show("文件已存在。", "警告", MessageBoxButtons.OK, MessageBoxIcon.Warning); return; } host_connectNC.Send_message_NumString(3, file_length.ToString() + '_' + file_name); add_msg2list("系统消息", "正在上传文件:" + file_path, Color.Red); byte[] buffer_file_send = new byte[1024 * 1024 * 35];//35M缓存 using (FileStream fs = new FileStream(file_path, FileMode.Open, FileAccess.Read)) { int readLength = fs.Read(buffer_file_send, 0, buffer_file_send.Length); host_connectNC.Send_message_NumByte(2, buffer_file_send, readLength); fs.Close(); } } else { if (host_file_list.Keys.Contains(file_info)) { MessageBox.Show("文件已存在。", "警告", MessageBoxButtons.OK, MessageBoxIcon.Warning); return; } byte[] buffer_file_send = new byte[1024 * 1024 * 35];//35M缓存 add_msg2list("系统消息", "正在上传文件:" + file_path, Color.Red); using (FileStream fs = new FileStream(file_path, FileMode.Open, FileAccess.Read)) { int readLength = 0; readLength = fs.Read(buffer_file_send, 0, buffer_file_send.Length); byte[] file_bytes = new byte[readLength]; Buffer.BlockCopy(buffer_file_send, 0, file_bytes, 0, readLength); host_file_list.Add(file_info, file_bytes); fs.Close(); } send_fileInfo2all_users(file_info, my_name); add_file2list(file_info, my_name, Color.Black); } } }