簡體   English   中英

C#中的Telnet服務器:C#中的AsyncConnection

[英]Telnet Server in C# :AsyncConnection in C#

我正在編寫一個telnet服務器當我執行以下程序時,我的程序正在退出,並且僅在1 cmd中顯示內容。我已異步使用TCP,但我的內容未顯示在2cmd上。有關此問題,請幫助我。

public void Start()
{
    Int32 port = 21;
    IPAddress localAddr = IPAddress.Parse("127.0.0.1");
    server = new TcpListener(localAddr, port);
    server.Start();
    Byte[] bytes = new Byte[256];
    Console.WriteLine("Listening...");
    StartAccept();
}

private void StartAccept()
{
    // listener.BeginAcceptTcpClient(OnAccept, listener);

    server.BeginAcceptTcpClient(HandleAsyncConnection, server);
}

private void HandleAsyncConnection(IAsyncResult res)
{ 
    String data = null;
    TcpListener listener = (TcpListener)res.AsyncState;

     //listen for new connections again
     TcpClient client = server.EndAcceptTcpClient(res);
     Byte[] bytes = new Byte[256];
     while (true)
     { 
        server.Start();
        // TcpClient client = server.AcceptTcpClient();
        Console.WriteLine("Connected!");
        data = null;
        NetworkStream stream = client.GetStream();
        int b, i, a;
        string str = null;
        string str1 = null;
        string str3 = null;
        int k = 0;
        int c = 0;
        if (stream.CanWrite)
        {
            if (c == 0)
            {
                `enter code here`
                byte[] Mybuff = Encoding.ASCII.GetBytes("Please Enter USer ID and Password");
                stream.Write(Mybuff, 0, Mybuff.Length);
                //StartAccept();
                c++;
            }
            else 
            {
                byte[] Mybuff = Encoding.ASCII.GetBytes("Please Enter USer ID and Password");
                stream.Write(Mybuff, 0, Mybuff.Length);
                StartAccept();
            }
        }
    }
}

嘗試添加Console.ReadLine(); StartAccept(); 保持控制台運行。

如果我理解正確,那么您正在嘗試將要在控制台1中鍵入的內容顯示在控制台2中,或者至少要使相同的數據顯示在兩個控制台窗口中,這些數據與通過telnet命令從另一個控制台窗口發送的消息相同。

如果是這種情況,並且您使用相同的代碼來設置命令控制台,那么由於端口沖突,該命令將無法在本地運行。 第一個命令控制台不需要為第二個控制台使用端口21的所有權。

在Windows機器上,現在可以使用某些WCF功能實現端口共享。 有關更多信息,請參見此處

通常,在編寫自己的應用程序時,建議使用與任何其他程序都不接近的端口號。 說17657而不是21,但這可能會因您的應用程序打算做什么而變色。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM