【问题标题】:Problem transmitting data between two TCP applications两个 TCP 应用程序之间传输数据的问题
【发布时间】:2011-08-07 09:51:48
【问题描述】:

我有一个使用 TcpListener 的服务器应用程序。它侦听连接,当它获得连接时,StreamReader 读取流并将流传递给根据请求提供回复的方法。回复是从 .html 文件中读取的字符串。我的客户端应用程序接受回复并将字符串设置为 webBrowser1.Documenttext 属性。问题:我的服务器似乎没有收到请求,但两个应用程序似乎相互连接(退出服务器会在客户端机器上产生错误)。这是我的代码:

服务器:

static void Main(string[] args)
    {
        Console.WriteLine("Application Started");
        IPHostEntry host;
        string localIP = "?";
        host = Dns.GetHostEntry(Dns.GetHostName());
        foreach (IPAddress ip in host.AddressList)
        {
            if (ip.AddressFamily.ToString() == "InterNetwork")
            {
                localIP = ip.ToString();
            }
        }

        IPAddress hostIP = IPAddress.Parse(localIP);
        TcpListener listener = new TcpListener(hostIP, 1986);
        string request;
        StreamWriter swStream;
        StreamReader srStream;

        listener.Start();
        while (listener.Pending() == true)
        {
            listener.AcceptTcpClient();
            Console.WriteLine("New Client Accepted");
            TcpClient client = listener.AcceptTcpClient();
            srStream = new StreamReader(client.GetStream());
            request = srStream.ReadToEnd();
            Console.WriteLine("Stream has been read.");
            swStream = new StreamWriter(client.GetStream());
            string responseText = handleRequest(request);
            swStream.Write(responseText);
        }

        Console.ReadLine();
    }

客户:

private void getInfo(string request)
    {
        string dispCode;
        string hostName;
        TcpClient client;

        //set IP & host
        serverIP = (IPAddress.Parse(SGAClient.Properties.Settings.Default.ServerIP));
        hostName = (Dns.GetHostEntry(serverIP).ToString());


        client = new TcpClient();
        client.Connect(serverIP, 1986);

        StreamWriter swStream = new StreamWriter(client.GetStream());
        swStream.Write(request);

        StreamReader srStream = new StreamReader(client.GetStream());

        //sets the value of the display code
        string response = srStream.ReadToEnd();

        swStream.Close();
        srStream.Close();
        client.Close();
        //displays the information from the server
        displayInfo(response);
    }

【问题讨论】:

    标签: c# tcp client


    【解决方案1】:
    listener.AcceptTcpClient();
    Console.WriteLine("New Client Accepted");
    TcpClient client = listener.AcceptTcpClient();
    

    您接受客户端(丢弃它)...然后尝试再次接受它。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-12-07
      • 2021-04-18
      相关资源
      最近更新 更多