现在需要做一个文件传输程序,要求是unix服务器与windows服务器上的某些文件互相传输,现在自己没有什么思路了,请高手指点~~~~赤膊雪地跪求~~~
解决方案 »
- C# 将mysql数据库中的表(整个表或者筛选性)写入到sql server中的编程方法
- Assembly.Load(Byte[])释放问题
- 泛型和委托
- 请问大虾如果我要判断一个变量是不是在指定的集合 ENUM中,有什么好办法吗?
- 有访问FTP的控件吗?WEBCLIENT可以用吗?
- 关于刷新static变量的问题
- 请问如何加图标呀!
- 在xp下编的程序在2000下报错,大家来看看是怎么回事!
- 怎样获得分区的序列号?
- 我辛辛苦苦开发的WebSearch密码怎么被别人知道?
- 用c# 作一个类似vs2003集合开发环境里界面设计的东东.
- 关于控件(?????????????????????????????????????????????????????????)
System.Net.Sockets命名空间
?
问个弱弱的问题~~我还要在UnixServer上放自己的代码??T_T--------------------------------
当然,不然你想怎么传??
listener = new TcpListener(port);
listener.Start();
statusBarPanel1.Text = "开始监听......";
Thread thread = new Thread(new ThreadStart(receive));
thread.Start();
private void receive()
{
sock = listener.AcceptSocket();
if(sock.Connected)
{
statusBarPanel1.Text = "与客户建立连系....";
string str = richTextBox1.Text;
byte [] bytee = System.Text.Encoding.BigEndianUnicode.GetBytes(str.ToCharArray());
sock.Send(bytee,0,bytee.Length,0);
//接受信息
while(!control)
{
NetworkStream stream = new NetworkStream(sock);
byte [] by = new Byte[1024];
int i = sock.Receive(by,by.Length,0);
string ss = System.Text.Encoding.BigEndianUnicode.GetString(by);
richTextBox2.AppendText(ss);
j = richTextBox1.Lines.Length;
if(j>= 2)
{
//如果不是@@@@@@@
if(richTextBox2.Lines[j-2].ToString() !=" @@@@@@")
{
filestream = new FileStream(richTextBox2.Lines[j-2].ToString(),FileMode.Open,FileAccess.Read);
//读文件
byte [] bb = new byte[1024];
while ((number = filestream.Read(bb,0,1024) ) != 0)
{
stream.Write(bb,0,number);
stream.Flush();
}
//文件发送完成送EOF
string st ="<EOF>";
byte [] byt = new byte[1024];
byt = System.Text.Encoding.ASCII.GetBytes(st.ToCharArray());
sock.Send(byt,0,byt.Length,0);
filestream.Close();
}//if@@@@@@
else if(richTextBox2.Lines[j-2].ToString() == "@@@@@@")
{
control = true;
}
}//if(>=2)
}
}//if(sock.Connected)
}
//这里是接收端的
private void connectFuWu()
{
int port = 0;
IPAddress myIP = IPAddress.Parse("127.0.0.1");
try
{
myIP = IPAddress.Parse(textBox2.Text);
}
catch
{
MessageBox.Show("你输入的IP地址格式不正确");
}
try
{
port = Int32.Parse(textBox3.Text);
}
catch
{
MessageBox.Show("请输入整数。");
}
try
{
if(textBox1.Text != ""&&textBox2.Text=="")
{
client.Connect (textBox1.Text,port);
statusBarPanel1.Text = "与服务器建立连接";
//获取网络流
netStream = client.GetStream();
byte [] bb = new byte[6400];
//读数据(服务器文件名)
i = netStream.Read (bb,0,6400);
string ss = System.Text.Encoding.BigEndianUnicode.GetString (bb);
richTextBox1.AppendText(ss);
int j = richTextBox1.Lines.Length;
for(int k =0;k<j-1;k++)
{
comboBox1.Items.Add(richTextBox1.Lines[k]);
}
comboBox1.Text = comboBox1.Items[0].ToString();
}
if(textBox1.Text == ""&&textBox2.Text != "")
{
client.Connect(myIP,port);
statusBarPanel1.Text = "与服务器建立连接";
//获取网络流
netStream = client.GetStream();
byte [] bb = new byte[6400];
//读数据(服务器文件名)
i = netStream.Read (bb,0,6400);
string ss = System.Text.Encoding.BigEndianUnicode.GetString (bb);
richTextBox1.AppendText(ss);
int j = richTextBox1.Lines.Length;
for(int k =0;k<j-1;k++)
{
comboBox1.Items.Add(richTextBox1.Lines[k]);
}
comboBox1.Text = comboBox1.Items[0].ToString();
}
if(textBox1.Text !=""&&textBox2.Text !="")
{
client.Connect(myIP,port);
statusBarPanel1.Text = "与服务器建立连接";
//获取网络流
netStream = client.GetStream();
byte [] bb = new byte[6400];
//读数据(服务器文件名)
i = netStream.Read (bb,0,6400);
string ss = System.Text.Encoding.BigEndianUnicode.GetString (bb);
richTextBox1.AppendText(ss);
int j = richTextBox1.Lines.Length;
for(int k =0;k<j-1;k++)
{
comboBox1.Items.Add(richTextBox1.Lines[k]);
}
comboBox1.Text = comboBox1.Items[0].ToString();
}
}
catch(Exception err)
{
MessageBox.Show(err.Message);
}
}
//你可以把filestream换成图形就可以了
System.Drawing
Graphics g;
g = this.CreateGraphics();是不是windows端的发送与接收??
配置 Samba 服务器在unix上应该也可以,共享文件夹后,直接用File.Copy()就可以了.