C#中什么叫做监听器,几个例子,最好给了简单的例子

解决方案 »

  1.   

    监听端口吗?
    看看这个:using System;
    using System.Windows.Forms;
    using System.Net.Sockets;
    using System.IO;
    namespace TCPSocketServer
    {
        public class Server : Form
        {
            Button btnStartServer;
            private StreamWriter serverStreamWriter;
            private StreamReader serverStreamReader;        public Server()
            {
                //create StartServer button set its properties & event handlers 
                this.btnStartServer = new Button();
                this.btnStartServer.Text = "Start Server";
                this.btnStartServer.Click += new System.EventHandler(this.btnStartServer_Click);
                //add controls to form            this.Controls.Add(this.btnStartServer);
            }        ///Main Method
            public static void Main(string[] args)
            {
                //creat n display windows form            Server tcpSockServer = new Server();
                Application.Run(tcpSockServer);
            }        ///Start Server
            private bool StartServer()
            {
                //create server's tcp listener for incoming connection
                TcpListener tcpServerListener = new TcpListener(4444);
                tcpServerListener.Start(); //start server            Console.WriteLine("Server Started");
                this.btnStartServer.Enabled = false;
                //block tcplistener to accept incoming connection            Socket serverSocket = tcpServerListener.AcceptSocket();            try
                {
                    if (serverSocket.Connected)
                    {
                        Console.WriteLine("Client connected");
                        //open network stream on accepted socket                    NetworkStream serverSockStream = new NetworkStream(serverSocket);
                        serverStreamWriter = new StreamWriter
                        (serverSockStream);
                        serverStreamReader = new StreamReader(serverSockStream);
                    }
                }
                catch (Exception e)
                {
                    Console.WriteLine(e.StackTrace);
                    return false;
                }            return true;
            }        ///Event handlers
            private void btnStartServer_Click(object sender, System.EventArgs e)
            {
                //start server
                if (!StartServer())
                    Console.WriteLine("Unable to start server");            //sending n receiving msgs            while (true)
                {
                    Console.WriteLine
                    ("CLIENT: " + serverStreamReader.ReadLine());
                    serverStreamWriter.WriteLine("Hi!");
                    serverStreamWriter.Flush();
                }//while        }
        }
    }
      

  2.   

    客户端代码:using System;
    using System.Windows.Forms;
    using System.Net.Sockets;
    using System.IO;namespace TCPSocketClient
    {
        public class Client : Form
        {
            private Button btnConnectToServer;
            private Button btnSendMessage;
            private StreamReader clientStreamReader;
            private StreamWriter clientStreamWriter;        public Client()
            {
                //create ConnectToServer button, set its properties & event handlers
                this.btnConnectToServer = new Button();
                this.btnConnectToServer.Text = "Connect";
                this.btnConnectToServer.Click +=
                  new System.EventHandler(btnConnectToServer_Click);
                //create SendMessage button, set its properties & event handlers            this.btnSendMessage = new Button();
                this.btnSendMessage.Text = "Send Message";
                this.btnSendMessage.Top += 30;
                this.btnSendMessage.Width += 20;
                this.btnSendMessage.Click += new System.EventHandler(btnSendMessage_Click);
                //add controls to windows form            this.Controls.Add(this.btnConnectToServer);
                this.Controls.Add(this.btnSendMessage);
            }
            ///Main method
            public static void Main(string[] args)
            {
                //create n display windows form
                Client tcpSockClient = new Client();
                Application.Run(tcpSockClient);
            }        ///Connect to server
            private bool ConnectToServer()
            {
                //connect to server at given port
                try
                {
                    TcpClient tcpClient = new TcpClient("localhost", 4444);
                    Console.WriteLine("Connected to Server");
                    //get a network stream from server                NetworkStream clientSockStream = tcpClient.GetStream();
                    clientStreamReader = new StreamReader(clientSockStream);
                    clientStreamWriter = new StreamWriter(clientSockStream);
                }
                catch (Exception e)
                {
                    Console.WriteLine(e.StackTrace);
                    return false;
                }
                return true;
            }        ///Event Handlers
            private void btnConnectToServer_Click(object sender, System.EventArgs e)
            {
                //connect to server
                if (!ConnectToServer())
                    Console.WriteLine("Unable to connect to server");
            }
            private void btnSendMessage_Click(object sender, System.EventArgs e)
            {
                try
                {
                    //send message to server
                    clientStreamWriter.WriteLine("Hello!");
                    clientStreamWriter.Flush();
                    Console.WriteLine("SERVER: " + clientStreamReader.ReadLine());
                }
                catch (Exception se)
                {
                    Console.WriteLine(se.StackTrace);
                }
            }
        }
    }
      

  3.   

    为什么中间还有Main方法?
    给解释下。。
      

  4.   

    Main方法是程序的入口,没有它程序从哪里开始执行?