将文件转化成字节流,然后用Socket发送到服务器上去。

解决方案 »

  1.   

    有没有好的解决办法。将本地文件上传到FTP上
    不要告诉我用FTP软件。我是要写程序来实现这
    个功能。
      

  2.   

    将文件转化成字节流,然后用Socket发送到服务器上去
    同意 参考System.Net.Stocket System.Net  好像还有一个Client的静态方法可以参考 本人没有实现过 关注…………
      

  3.   

    例子:
    private void button1_Click(object sender, System.EventArgs e) { 
    //取得预保存的文件名 
    string fileName=textBox3.Text.Trim(); 
    //远程主机 
    string hostName=textBox1.Text.Trim(); 
    //端口 
    int port=Int32.Parse(textBox2.Text.Trim()); 
    //得到主机信息 
    IPHostEntry ipInfo=Dns.GetHostByName(hostName); 
    //取得IPAddress[] 
    IPAddress[] ipAddr=ipInfo.AddressList; 
    //得到ip 
    IPAddress ip=ipAddr[0]; 
    //组合出远程终结点 
    IPEndPoint hostEP=new IPEndPoint(ip,port); 
    //创建Socket 实例 
    Socket socket=new Socket(AddressFamily.InterNetwork,SocketType.Stream,ProtocolType.Tcp); 
    try 

    //尝试连接 
    socket.Connect(hostEP); 

    catch(Exception se) 

    MessageBox.Show("连接错误"+se.Message,"提示信息 
    ,MessageBoxButtons.RetryCancel,MessageBoxIcon.Information); 

    //发送给远程主机的请求内容串 
    string sendStr="GET / HTTP/1.1\r\nHost: " + hostName + 
    "\r\nConnection: Close\r\n\r\n"; 
    //创建bytes字节数组以转换发送串 
    byte[] bytesSendStr=new byte[1024]; 
    //将发送内容字符串转换成字节byte数组 
    bytesSendStr=Encoding.ASCII.GetBytes(sendStr); 
    try 

    //向主机发送请求 
    socket.Send(bytesSendStr,bytesSendStr.Length,0); 

    catch(Exception ce) 

    MessageBox.Show("发送错误:"+ce.Message,"提示信息 
    ,MessageBoxButtons.RetryCancel,MessageBoxIcon.Information); 

    //声明接收返回内容的字符串 
    string recvStr=""; 
    //声明字节数组,一次接收数据的长度为1024字节 
    byte[] recvBytes=new byte[1024]; 
    //返回实际接收内容的字节数 
    int bytes=0; 
    //循环读取,直到接收完所有数据 
    while(true) 

    bytes=socket.Receive(recvBytes,recvBytes.Length,0); 
    //读取完成后退出循环 
    if(bytes<=0) 
    break; 
    //将读取的字节数转换为字符串 
    recvStr+=Encoding.ASCII.GetString(recvBytes,0,bytes); 

    //将所读取的字符串转换为字节数组 
    byte[] content=Encoding.ASCII.GetBytes(recvStr); 
    try 

    //创建文件流对象实例 
    FileStream fs=new FileStream(fileName,FileMode.OpenOrCreate,FileAccess.ReadWrite); 
    //写入文件 
    fs.Write(content,0,content.Length); 

    catch(Exception fe) 

    MessageBox.Show("文件创建/写入错误:"+fe.Message,"提示信息",MessageBoxButtons.RetryCancel,MessageBoxIcon.Information); 

    //禁用Socket 
    socket.Shutdown(SocketShutdown.Both); 
    //关闭Socket 
    socket.Close(); 

    }
      

  4.   

    using System;
    using System.IO;
    using System.Net;
    using System.Threading;
    using System.net.Sockets;TcpListener tcpListener = new TcpListener(21) //监听21端口
    tcpListener.Start();
    Socket socketForClient = tcpListener.Accept();  //套接字连接if (socketForClient.Connected)
    {
          NetworkStream networkStream = new NetWorkStream(SocketFoeClient);
          System.IO.StreamWriter streamWriter = new System.IO.streamWriter(networkStream); 向这个流写入时 流将跨越网络发送给客户  实际程序我写不出来 (没有做过) 肯定要在一个线程中运行请求代码 而且还应该在try 代码快中封装 处理网络问题的逻辑这种方法还要在客户端做一下TcpClient 的类 创建streamreader云云}