• .net网络编程(4)TcpListener、TcpClient


    MSDN例子

    服务器端

    用TcpListener监听,接受TcpClient,以NetworkStream传输数据

    public static void Main()
    {
        TcpListener server = null;
        try
        {
            // Set the TcpListener on port 13000.
            Int32 port = 13000;
            IPAddress localAddr = IPAddress.Parse("127.0.0.1");
    
            // TcpListener server = new TcpListener(port);
            server = new TcpListener(localAddr, port);
    
            // Start listening for client requests.
            server.Start();
    
            // Buffer for reading data
            Byte[] bytes = new Byte[256];
            String data = null;
    
            // Enter the listening loop.
            while (true)
            {
                Console.Write("Waiting for a connection... ");
    
                // Perform a blocking call to accept requests.
                // You could also user server.AcceptSocket() here.
                TcpClient client = server.AcceptTcpClient();
                Console.WriteLine("Connected!");
    
                data = null;
    
                // Get a stream object for reading and writing
                NetworkStream stream = client.GetStream();
    
                int i;
    
                // Loop to receive all the data sent by the client.
                while ((i = stream.Read(bytes, 0, bytes.Length)) != 0)
                {
                    // Translate data bytes to a ASCII string.
                    data = System.Text.Encoding.ASCII.GetString(bytes, 0, i);
                    Console.WriteLine("Received: {0}", data);
    
                    // Process the data sent by the client.
                    data = data.ToUpper();
    
                    byte[] msg = System.Text.Encoding.ASCII.GetBytes(data);
    
                    // Send back a response.
                    stream.Write(msg, 0, msg.Length);
                    Console.WriteLine("Sent: {0}", data);
                }
    
                // Shutdown and end connection
                client.Close();
            }
        }
        catch (SocketException e)
        {
            Console.WriteLine("SocketException: {0}", e);
        }
        finally
        {
            // Stop listening for new clients.
            server.Stop();
        }
    
    
        Console.WriteLine("\nHit enter to continue...");
        Console.Read();
    }
    

    客户端

    static class Class1
    {
        static void Connect(String server, String message)
        {
            try
            {
                // Create a TcpClient.
                // Note, for this client to work you need to have a TcpServer 
                // connected to the same address as specified by the server, port
                // combination.
                Int32 port = 13000;
                TcpClient client = new TcpClient(server, port);
    
                // Translate the passed message into ASCII and store it as a Byte array.
                Byte[] data = System.Text.Encoding.ASCII.GetBytes(message);
    
                // Get a client stream for reading and writing.
                //  Stream stream = client.GetStream();
    
                NetworkStream stream = client.GetStream();
    
                // Send the message to the connected TcpServer. 
                stream.Write(data, 0, data.Length);
    
                Console.WriteLine("Sent: {0}", message);
    
                // Receive the TcpServer.response.
    
                // Buffer to store the response bytes.
                data = new Byte[256];
    
                // String to store the response ASCII representation.
                String responseData = String.Empty;
    
                // Read the first batch of the TcpServer response bytes.
                Int32 bytes = stream.Read(data, 0, data.Length);
                responseData = System.Text.Encoding.ASCII.GetString(data, 0, bytes);
                Console.WriteLine("Received: {0}", responseData);
    
                // Close everything.
                stream.Close();
                client.Close();
            }
            catch (ArgumentNullException e)
            {
                Console.WriteLine("ArgumentNullException: {0}", e);
            }
            catch (SocketException e)
            {
                Console.WriteLine("SocketException: {0}", e);
            }
    
            Console.WriteLine("\n Press Enter to continue...");
            Console.Read();
        }
        public static void Main()
        {
            Connect("127.0.0.1", "hello");
        }
    }
    
  • 相关阅读:
    如何在 Microsoft Visual C# .NET 中实现 Microsoft Excel 自动化
    CentOS 6.5静态IP的设置(NAT和桥接都适用)
    myeclipse里如何添加mysql数据库
    Attribute value is quoted with " which must be escaped when used within the value 问题解决
    CentOS 6.5安装之后的网络配置
    Apache server for win解压版的安装与配置
    Oracle SQL 基本操作之 用户权限管理方法
    CentOS 6.5的安装详解
    IO类01
    可见性的问题
  • 原文地址:https://www.cnblogs.com/Clingingboy/p/1970669.html
Copyright © 2020-2023  润新知