Files
lserp_cs_6.0/插件库/Lskj.SocketClient/Form1.cs
T
cyf ab56a9bcf7 基线 SVN r240
SVN-Revision: r240
2025-02-06 06:46:06 +00:00

211 lines
7.6 KiB
C#

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Threading;
using System.IO;
namespace Lskj.SocketClient
{
public partial class Form1 : Form
{
/// <summary>
/// 每次上传数据包大小
/// </summary>
public static int UploadPacketSize = 32 * 1024;
/// <summary>
/// 每次下载数据包大小
/// </summary>
public static int DownLoadPacketSize = 64 * 1024;
private ClientUploadSocket _uploadSocket;
private ClientDownLoadSocket _downSocket;
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
try
{
_uploadSocket = new ClientUploadSocket();
_uploadSocket.Connect("127.0.0.1", 9999);
ShowMsg("Connect Server Success.127.0.0.1:9999");
_uploadSocket.DoActive();
_uploadSocket.DoLogin("admin", "admin");
ShowMsg("Login Server Success");
ShowMsg("Please Input Upload FileName");
}
catch (Exception ex)
{
ShowMsg("Connect Server Fault." + ex.Message);
}
}
private void button2_Click(object sender, EventArgs e)
{
try
{
if (openFileDialog1.ShowDialog() == DialogResult.OK)
{
for (int i = 0; i < 3; i++) //发送失败后,尝试3次重发
{
if (SendFile(openFileDialog1.FileName))
{
ShowMsg("Upload File Success");
break;
}
Thread.Sleep(3 * 1000); //发送失败等待3S后重连
}
}
}
catch (Exception ex)
{
ShowMsg("SendFile Fault." + ex.StackTrace);
}
}
private bool SendFile(string fileName)
{
FileStream fileStream = new FileStream(fileName, FileMode.Open, FileAccess.ReadWrite);
try
{
try
{
long fileSize = fileStream.Length;
if (!_uploadSocket.DoUpload("", Path.GetFileName(fileName), ref fileSize))
throw new Exception(_uploadSocket.ErrorString);
fileStream.Position = fileSize;
label1.Text = Path.GetFileName(fileName) + ":" + fileSize + "/" + Convert.ToInt32(fileStream.Length / 1024 / 1024) + "MB";
byte[] readBuffer = new byte[UploadPacketSize];
long uploadSize = 0;
while (fileStream.Position < fileStream.Length)
{
int count = fileStream.Read(readBuffer, 0, UploadPacketSize);
if (!_uploadSocket.DoData(readBuffer, 0, count))
throw new Exception(_uploadSocket.ErrorString);
uploadSize += count;
Application.DoEvents();
label1.Text = Path.GetFileName(fileName) + ":" + Convert.ToInt32(uploadSize / 1024 / 1024) + "MB/" + Convert.ToInt32(fileStream.Length / 1024 / 1024) + "MB";
ShowMsg("本地传输数据大小:" + uploadSize);
}
if (!_uploadSocket.DoEof(fileStream.Length))
throw new Exception(_uploadSocket.ErrorString);
return true;
}
catch (Exception E)
{
ShowMsg("Upload File Error: " + E.Message);
return false;
}
}
finally
{
fileStream.Close();
}
}
public bool DownFile(string fileName)
{
FileStream fileStream = null;
try
{
saveFileDialog1.FileName = fileName;
if (saveFileDialog1.ShowDialog() == DialogResult.OK)
{
long localSize = 0;
long fileSize = 0;
if (File.Exists(saveFileDialog1.FileName))
{
fileStream = new FileStream(fileName, FileMode.Open, FileAccess.ReadWrite);
localSize = fileStream.Length;
}
if (!_downSocket.DoDownLoad("", fileName, ref fileSize))
throw new Exception(_uploadSocket.ErrorString);
ShowMsg(fileName + string.Format("({0}/{1}kb)", localSize, fileSize));
// 开始下载
byte[] readBuffer = new byte[DownLoadPacketSize];
long downloadSize = localSize;
//while (fileStream.Position < fileStream.Length)
//{
// fileStream.Write(readBuffer, 0, DownLoadPacketSize);
// if (!_uploadSocket.DoData(readBuffer, 0, count))
// throw new Exception(_uploadSocket.ErrorString);
// uploadSize += count;
// Application.DoEvents();
// label1.Text = Path.GetFileName(fileName) + ":" + Convert.ToInt32(uploadSize / 1024 / 1024) + "MB/" + Convert.ToInt32(fileStream.Length / 1024 / 1024) + "MB";
// ShowMsg("本地下载数据大小:" + uploadSize);
//}
//if (!_uploadSocket.DoEof(fileStream.Length))
// throw new Exception(_uploadSocket.ErrorString);
}
return true;
}
catch (Exception ex)
{
ShowMsg("DownLoadFile Fault." + ex.StackTrace);
}
finally
{
if (fileStream != null) fileStream.Close();
}
return false;
}
public void ShowMsg(string msg)
{
this.Invoke((EventHandler)delegate
{
this.textBox1.Text += msg + "\r\n";
this.textBox1.ScrollToCaret();
});
}
private void button3_Click(object sender, EventArgs e)
{
try
{
string fileName = "代码注释工具.rar";
for (int i = 0; i < 3; i++) //发送失败后,尝试3次重发
{
if (DownFile(fileName))
{
ShowMsg("DownLoad File Success");
break;
}
Thread.Sleep(3 * 1000); //发送失败等待3S后重连
}
}
catch (Exception ex)
{
ShowMsg("SendFile Fault." + ex.StackTrace);
}
}
private void button4_Click(object sender, EventArgs e)
{
try
{
_downSocket = new ClientDownLoadSocket();
_downSocket.Connect("127.0.0.1", 9999);
ShowMsg("Connect Server Success.127.0.0.1:9999");
_downSocket.DoActive();
_downSocket.DoLogin("admin", "admin");
ShowMsg("Login Server Success");
}
catch (Exception ex)
{
ShowMsg(ex.Message);
}
}
}
}