使用代理进行文件传输 需要使用代理 进行文件传输 用了Oob 不知道怎么用代理请大虾们指教 领导要求的工作 :(最好有源码 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 代理?加一个AppServer来控制文件传输还是? 就是使用代理进行文件传输啊因为已经做好了一个发送端:类似于这样 client = server.Accept(); //获得客户端节点对象 IPEndPoint clientep = (IPEndPoint)client.RemoteEndPoint; string sAnswer = System.Text.Encoding.Unicode.GetString(FileTransferClass.ReceiveVarData(client)); if (sAnswer != "Accept") { MessageBox.Show("对方拒绝接受!"); } else { //获得客户端的IP地址 //this.textBox7.Text = clientep.Address.ToString(); //发送[文件名]到客户端 FileTransferClass.SendVarData(client, System.Text.Encoding.Unicode.GetBytes(EzoneFile.Name)); //发送[包的大小]到客户端 FileTransferClass.SendVarData(client, System.Text.Encoding.Unicode.GetBytes(PacketSize.ToString())); //发送[包的总数量]到客户端 FileTransferClass.SendVarData(client, System.Text.Encoding.Unicode.GetBytes(PacketCount.ToString())); //发送[最后一个包的大小]到客户端 FileTransferClass.SendVarData(client, System.Text.Encoding.Unicode.GetBytes(LastDataPacket.ToString())); //数据包 byte[] data = new byte[PacketSize]; //开始循环发送数据包 for (int i = 0; i < PacketCount; i++) { //从文件流读取数据并填充数据包 MyFileStream.Read(data, 0, data.Length); //发送数据包 FileTransferClass.SendVarData(client, data); //显示发送数据包的个数 //this.textBox10.Text = ((int)(i + 1)).ToString(); //进度条值的显示 //this.progressBar1.PerformStep(); this.Invoke(upb); } //如果还有多余的数据包,则应该发送完毕! if (LastDataPacket != 0) { data = new byte[LastDataPacket]; MyFileStream.Read(data, 0, data.Length); FileTransferClass.SendVarData(client, data); //this.progressBar1.Value = this.progressBar1.Maximum; this.Invoke(upbtm, new object[] { PacketCount }); } //关闭套接字 client.Close(); server.Close(); //关闭文件流 MyFileStream.Close(); //this.button2.Enabled = true; MessageBox.Show("文件传输完毕!"); this.Invoke(sbe); bFlag = true; } } catch (Exception ex) { MessageBox.Show("连接已经断开!"); //this.Invoke(sbe); } finally { //关闭套接字 if(client!=null) client.Close(); if(server!=null) server.Close(); //关闭文件流 if(MyFileStream!=null) MyFileStream.Close(); if (!bClosedFlag) { if (!bFlag) this.Invoke(sbe); } }但是这样只能实现局域网内传输或者是公网之间传送 不能实现局域网和公网之间的传送 需要代理了 不知道该怎么做 前面没全 加上这个: UpdateProgressBarMaximum upbm = new UpdateProgressBarMaximum(UpdateProgressBarMaximumMethod); UpdateProgressBar upb = new UpdateProgressBar(UpdateProgressBarMethod); UpdateProgressBarToMaximum upbtm = new UpdateProgressBarToMaximum(UpdateProgressBarToMaximumMethod); SetButtonEnable sbe = new SetButtonEnable(SetButtonEnableMethod); Socket server = null; Socket client = null; FileStream MyFileStream = null; bool bFlag = false; try { //this.Invoke(timeUpdater, new object[] {currentTime}); //创建一个文件对象 FileInfo EzoneFile = new FileInfo(this.sFileName); //打开文件流 MyFileStream = EzoneFile.OpenRead(); //包的大小 int PacketSize = 50000; //包的数量 int PacketCount = (int)(MyFileStream.Length / ((long)PacketSize)); //this.textBox8.Text = PacketCount.ToString(); //this.progressBar1.Maximum = PacketCount; this.Invoke(upbm, new object[] { PacketCount }); //最后一个包的大小 int LastDataPacket = (int)(MyFileStream.Length - ((long)(PacketSize * PacketCount))); //this.textBox9.Text = LastDataPacket.ToString(); //创建一个网络端点 IPEndPoint ipep = new IPEndPoint(IPAddress.Any, iPort); //IPEndPoint ipep = new IPEndPoint(IPAddress.Parse(this.m_ClientIp), 8888); //创建一个套接字 server = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); //绑定套接字到端口 server.Bind(ipep); //开始侦听(并堵塞该线程) server.Listen(10); [HELP] 弹出自定义菜单 如何在C#WinFrom的TreeView中,确定你用鼠标选中的是父节点还是子节点,在线等~~~ 求一算法思路!(5个数通过+、-、*、/得到小于49的数) CheckBox的Checked属性数据绑定问题??? 小弟也想和大侠换c#程序学习 Web应用程序的发布 MessageBox有几种用法? 小程序,小问题 winform 下 datagrid 的cell 如何多行显示,输入? Rundll32.exe 怎么获取textbox里的值? 急求javascript代码
发送端:类似于这样
client = server.Accept();
//获得客户端节点对象
IPEndPoint clientep = (IPEndPoint)client.RemoteEndPoint; string sAnswer = System.Text.Encoding.Unicode.GetString(FileTransferClass.ReceiveVarData(client));
if (sAnswer != "Accept")
{
MessageBox.Show("对方拒绝接受!"); }
else
{ //获得客户端的IP地址
//this.textBox7.Text = clientep.Address.ToString();
//发送[文件名]到客户端
FileTransferClass.SendVarData(client, System.Text.Encoding.Unicode.GetBytes(EzoneFile.Name));
//发送[包的大小]到客户端
FileTransferClass.SendVarData(client, System.Text.Encoding.Unicode.GetBytes(PacketSize.ToString()));
//发送[包的总数量]到客户端
FileTransferClass.SendVarData(client, System.Text.Encoding.Unicode.GetBytes(PacketCount.ToString()));
//发送[最后一个包的大小]到客户端
FileTransferClass.SendVarData(client, System.Text.Encoding.Unicode.GetBytes(LastDataPacket.ToString())); //数据包
byte[] data = new byte[PacketSize];
//开始循环发送数据包
for (int i = 0; i < PacketCount; i++)
{
//从文件流读取数据并填充数据包
MyFileStream.Read(data, 0, data.Length);
//发送数据包
FileTransferClass.SendVarData(client, data);
//显示发送数据包的个数
//this.textBox10.Text = ((int)(i + 1)).ToString();
//进度条值的显示
//this.progressBar1.PerformStep();
this.Invoke(upb);
} //如果还有多余的数据包,则应该发送完毕!
if (LastDataPacket != 0)
{
data = new byte[LastDataPacket];
MyFileStream.Read(data, 0, data.Length);
FileTransferClass.SendVarData(client, data);
//this.progressBar1.Value = this.progressBar1.Maximum;
this.Invoke(upbtm, new object[] { PacketCount });
} //关闭套接字
client.Close();
server.Close();
//关闭文件流
MyFileStream.Close();
//this.button2.Enabled = true;
MessageBox.Show("文件传输完毕!");
this.Invoke(sbe);
bFlag = true;
}
}
catch (Exception ex)
{
MessageBox.Show("连接已经断开!");
//this.Invoke(sbe);
}
finally
{
//关闭套接字
if(client!=null)
client.Close();
if(server!=null)
server.Close();
//关闭文件流
if(MyFileStream!=null)
MyFileStream.Close();
if (!bClosedFlag)
{
if (!bFlag)
this.Invoke(sbe);
}
}
但是这样只能实现局域网内传输或者是公网之间传送 不能实现局域网和公网之间的传送 需要代理了 不知道该怎么做
UpdateProgressBarMaximum upbm = new UpdateProgressBarMaximum(UpdateProgressBarMaximumMethod);
UpdateProgressBar upb = new UpdateProgressBar(UpdateProgressBarMethod);
UpdateProgressBarToMaximum upbtm = new UpdateProgressBarToMaximum(UpdateProgressBarToMaximumMethod);
SetButtonEnable sbe = new SetButtonEnable(SetButtonEnableMethod); Socket server = null;
Socket client = null;
FileStream MyFileStream = null; bool bFlag = false; try
{
//this.Invoke(timeUpdater, new object[] {currentTime});
//创建一个文件对象
FileInfo EzoneFile = new FileInfo(this.sFileName);
//打开文件流
MyFileStream = EzoneFile.OpenRead();
//包的大小
int PacketSize = 50000;
//包的数量
int PacketCount = (int)(MyFileStream.Length / ((long)PacketSize));
//this.textBox8.Text = PacketCount.ToString();
//this.progressBar1.Maximum = PacketCount;
this.Invoke(upbm, new object[] { PacketCount });
//最后一个包的大小
int LastDataPacket = (int)(MyFileStream.Length - ((long)(PacketSize * PacketCount)));
//this.textBox9.Text = LastDataPacket.ToString();
//创建一个网络端点
IPEndPoint ipep = new IPEndPoint(IPAddress.Any, iPort);
//IPEndPoint ipep = new IPEndPoint(IPAddress.Parse(this.m_ClientIp), 8888);
//创建一个套接字
server = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
//绑定套接字到端口
server.Bind(ipep);
//开始侦听(并堵塞该线程) server.Listen(10);