• C# 网络编程 TcpListener


    1.服务断代码

     public partial class Server : Form
        {
    
            private bool lk = true;
    
            public Server()
            {
                InitializeComponent();
                TextBox.CheckForIllegalCrossThreadCalls = false;
            }
    
    
    
            private void button1_Click(object sender, EventArgs e)
            {
                IPAddress ip = IPAddress.Parse(textBox1.Text);
    
                TcpListener server = new TcpListener(ip, int.Parse(textBox2.Text));
                server.Start();
    
                TaskFactory tasks = new TaskFactory();
                string ipaddress = string.Empty;
                TcpClient client = null;
                while (lk)
                {
                    Console.WriteLine("等待连接。。。");
                    client = server.AcceptTcpClient();
    
                    tasks.StartNew(() => HandleClient(client, ipaddress)).Wait();
                }
            }
    
            private void HandleClient(TcpClient tcpclient, string ipadd)
            {
    
                lock (tcpclient)
                {
                    if (tcpclient == null)
                    {
                        return;
                    }
    
                    // Buffer for reading data
                    Byte[] bytes = new Byte[1024];
                    String data = null;
    
                    // Enter the listening loop.
                    while (tcpclient.Connected)
                    {
    
    
                        data = null;
    
                        NetworkStream stream = tcpclient.GetStream();
    
                        int i;
    
                        if ((i = stream.Read(bytes, 0, bytes.Length)) != 0)
                        {
                            data = System.Text.Encoding.UTF8.GetString(bytes, 0, i);
    
                            byte[] msg = System.Text.Encoding.UTF8.GetBytes(data);
    
                            //stream.Write(msg, 0, msg.Length);
                            textBox3.AppendText(data);
                        }
                        tcpclient.Close();
                    }
                }
            }
    
        }
    View Code

    2.客户端代码

    public partial class Form1 : Form
        {
            public Form1()
            {
                InitializeComponent();
            }
    
            TcpClient client = null;
            private void button1_Click(object sender, EventArgs e)
            {
    
                client = new TcpClient();
                try
                {
                    //if (!client.Connected)
                    //    client.Close();
                    client.Connect(tbIP.Text, int.Parse(tbPort.Text));      // 与服务器连接
                }
                catch (Exception ex)
                {
                    Console.WriteLine(ex.Message);
                    return;
                }
    
                textBox2.Text = "连接成功";
            }
    
            private void textBox1_TextChanged(object sender, EventArgs e)
            {
    
            }
    
            private void button2_Click(object sender, EventArgs e)
            {
                button1_Click(null, null);
    
                string msg = textBox1.Text;
                if (msg != "")
                {
                    NetworkStream streamToServer = client.GetStream();        //创建一个客户端的NetworkStream对象
                    byte[] buffer = Encoding.UTF8.GetBytes(msg);     // 获得缓存
    
                    streamToServer.Write(buffer, 0, buffer.Length);     // 发往服务器
                    int numb = streamToServer.Read(buffer, 0, buffer.Length);     //接收来自服务器传回来的数据,保存到buffer数组(byte型)中去
                    string s = Encoding.UTF8.GetString(buffer, 0, buffer.Length);   //将数组中的内容转化成string字符串,并且输出
                    textBox2.AppendText(s + "
    ");
                }
            }
        }
    View Code
  • 相关阅读:
    Codeforces 912 D. Fishes (贪心、bfs)
    Codeforces 908 D.New Year and Arbitrary Arrangement (概率&期望DP)
    HDU
    HDU
    POJ-2299 Ultra-QuickSort (树状数组)
    deque!
    HDU
    乘法逆元
    Codeforces 911D. Inversion Counting (数学、思维)
    Codeforces 909E. Coprocessor (拓扑、模拟)
  • 原文地址:https://www.cnblogs.com/SoftWareIe/p/9861512.html
Copyright © 2020-2023  润新知