尝试使用C#Forms应用程序连接到远程服务器

时间:2012-01-27 03:32:06

标签: c# .net client-server

我要做的是连接到远程服务器并读取文本文件,然后在控制台中显示它。远程服务器需要用户名和密码才能访问。我想问你们,最好的方法是做什么。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Net;
using System.Runtime.InteropServices;
using System.IO;
using Microsoft.Win32.SafeHandles;

namespace WebclientTest
{


class Server
{
    [DllImport("kernel32")]
    static extern bool AllocConsole();

    WebClient client = new WebClient();

    private string hostName;
    private string userName;
    private string password;

    //Constructor gets host username and password
    public Server(string _hostName, string _userName, string _password)
    {
        hostName = _hostName;
        userName = _userName;
        password = _password;
    }

    public void Connect()
    {
        AllocConsole();
        //Console.WriteLine("HelloWorld");
        //Console.ReadLine();
        Uri uri = new Uri(hostName);
        Console.WriteLine(uri.Host.ToString());
        string fileLocation = uri.Host+"\someDirectory.textfile.txt";
        StreamReader strRead = new StreamReader(fileLocation);
        Console.Write(strRead.ReadLine());
    }
}

}

1 个答案:

答案 0 :(得分:0)

不确定这是不是最好的方法,但是我已经通过映射驱动器然后使用映射的驱动器号来访问文件来做类似的事情:

    private void mapDrive(String strDrive, String strLocation, string strUser, string strPassword)
    {
        System.Diagnostics.Process proc  = new System.Diagnostics.Process();
        proc.EnableRaisingEvents = false;
        proc.StartInfo.FileName = "net";
        proc.StartInfo.Arguments = "use " + @strDrive + " " + @strLocation + " " + @" /USER:" + @strUser + " " + @strPassword;
        proc.Start();
        proc.WaitForExit();
    }

完成后,请务必删除映射:

    private void unmapDrive(String strDrive)
    {
        System.Diagnostics.Process proc = new System.Diagnostics.Process();
        proc.EnableRaisingEvents = false;
        proc.StartInfo.FileName = "net";
        proc.StartInfo.Arguments = "use " + @strDrive + @" /delete /yes";
        proc.Start();
        proc.WaitForExit();
    }