从Windows应用程序向控制台应用程序发送数据

时间:2012-08-27 09:31:55

标签: c#

在我的应用程序中,我使用Windows窗体创建了一个GUI,其中我有一个带有值的ListBox和一个名为sendto的按钮。用户从ListBox中选择并单击sendto按钮。单击此按钮,ListBox中的选定值应显示在控制台应用程序上。这里,Windows窗体中开发的GUI充当服务器,控制台应用程序充当客户端。如何将数据从Windows窗体发送到C#中的控制台应用程序?我是C#的新手。

2 个答案:

答案 0 :(得分:2)

我在回答你的问题:使用c#进行套接字编程......但是一些不太全面的人关闭了你的问题......

我知道你可能是一个新的程序员。但我发现你提出问题让你发展自己成为更好的程序员是件好事。我会投票给你的! :d

请参阅以下代码,它可以帮助您轻松使用迷你客户端服务器应用程序。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using PostSharp.Aspects;
using System.Diagnostics;
using System.IO;

namespace TestCode
{
    public class Program
    {
        public static StreamReader ServerReader;

        public static StreamWriter ServerWriter;

        static void Main(string[] args)
        {
            // here are all information to start your mini server
            ProcessStartInfo startServerInformation = new ProcessStartInfo(@"c:\path\to\serverApp.exe");

            // this value put the server process invisible. put it to false in while debuging to see what happen
            startServerInformation.CreateNoWindow = true;

            // this avoid you problem
            startServerInformation.ErrorDialog = false;

            // this tells that you whant to get all connections from the server
            startServerInformation.RedirectStandardInput = true;
            startServerInformation.RedirectStandardOutput = true;

            // this tells that you whant to be able to use special caracter that are not define in ASCII like "é" or "ï"
            startServerInformation.StandardErrorEncoding = Encoding.UTF8;
            startServerInformation.StandardOutputEncoding = Encoding.UTF8;

            // start the server app here
            Process serverProcess = Process.Start(startServerInformation);

            // get the control of the output and input connection
            Program.ServerReader = serverProcess.StandardOutput;
            Program.ServerWriter = serverProcess.StandardInput;

            // write information to the server
            Program.ServerWriter.WriteLine("Hi server im the client app :D");

            // wait the server responce
            string serverResponce = Program.ServerReader.ReadLine();

            // close the server application if needed
            serverProcess.Kill();
        }
    }
}

请注意,在服务器应用程序中,您可以使用以下方式接收客户端信息:

string clientRequest = Console.ReadLine();
Console.WriteLine("Hi client i'm the server :) !");

答案 1 :(得分:1)

您可以使用管道,请浏览MSDN article以进行本地通信或进行网络通信MSDN article