zoukankan      html  css  js  c++  java
  • 利用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();
    }
  • 相关阅读:
    【leetcode-100】 简单 树相关题目
    【leetcode-101】 对称二叉树
    【2】【leetcode-105,106】 从前序与中序遍历序列构造二叉树,从中序与后序遍历序列构造二叉树
    【leetcode-102,107,103】 二叉树的层次遍历
    iOS开发
    对称加密和不对称加密原理
    uiimageview 异步加载图片
    如何让IOS中的文本实现3D效果
    SDWebImage使用,图片加载和缓存
    ios 图片处理( 1.按比例缩放 2.指定宽度按比例缩放
  • 原文地址:https://www.cnblogs.com/top5/p/1699474.html
Copyright © 2011-2022 走看看