• 利用P2P技术实现点对点聊天


    using System.Data;
    using System.IO;
    using System.Net.Sockets;
    using System.Threading;

    private Thread th;
    private TcpListener tcpl;
    private bool listenerRun = true;

    private void Listen()
    {
        
    try
        {
            tcpl 
    = new TcpListener(5656);
            tcpl.Start();
            statusBar1.Text 
    = "正在监听...";

            
    while(listenerRun)
            {
                Socket s 
    = tcpl.AcceptSocket();
                Byte[] stream 
    = new Byte[80];
                
    int i=s.Receive(stream) ;
                
    string message = System.Text.Encoding.UTF8.GetString(stream);
                richTextBox1.AppendText(message);
            }
        }
        
    catch(System.Security.SecurityException)
        {
            MessageBox.Show(
    "防火墙安全错误!""错误", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
        }
        
    catch(Exception)
        {
            statusBar1.Text 
    = "已停止监听!";
        }
    }

    private void Send()
    {
        
    try
        {
            
    string msg = "<"+textBox3.Text+">"+textBox2.Text;
            TcpClient tcpc 
    = new TcpClient(textBox1.Text, 5656);
            NetworkStream tcpStream 
    = tcpc.GetStream();

            StreamWriter reqStreamW 
    = new StreamWriter(tcpStream);
            reqStreamW.Write(msg);
            reqStreamW.Flush();
            tcpStream.Close();
            tcpc.Close();
            richTextBox1.AppendText(msg);
            textBox2.Clear();
        }
        
    catch(Exception)
        {
            statusBar1.Text 
    = "目标计算机拒绝连接请求!";
        }
    }

    private void Stop()
    {
        tcpl.Stop();
        th.Abort();
    }

    [STAThread]
    static void Main() 
    {
        Application.Run(
    new Form1());
    }

    private void button1_Click(object sender, System.EventArgs e)
    {
        button1.Enabled 
    = false;
        button2.Enabled 
    = true;
        th 
    = new Thread(new ThreadStart(Listen));    
        th.Start();
    }

    private void button2_Click(object sender, System.EventArgs e)
    {
        button1.Enabled 
    = true;
        button2.Enabled 
    = false;
        listenerRun 
    = false;
        Stop();
    }

    private void button3_Click(object sender, System.EventArgs e)
    {
        Send();
    }
  • 相关阅读:
    出现java.lang.NoClassDefFoundError: org/apache/commons/collections/FastHashMap错误问题解决
    选择一个更合适的编程语言
    23.if结构简单应用
    java环境的配置-传送门
    Java课程继续更新说明
    go语言熟知的开源项目
    go语言关于值类型和引用类型
    go语言实现生产者-消费者
    http协议——无连接、无状态
    jenkins结合gitlab实现提交代码自动构建
  • 原文地址:https://www.cnblogs.com/top5/p/1699474.html
Copyright © 2020-2023  润新知