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();
    }
  • 相关阅读:
    jquery选择器
    frameset的target属性
    最长回文子串 南邮NOJ 1100
    最长回文子串 南邮NOJ 1100
    最长回文子串 南邮NOJ 1100
    NOJ 蛇形填数 1094
    NOJ 蛇形填数 1094
    NOJ 蛇形填数 1094
    NOJ 蛇形填数 1094
    开灯问题 南邮NOJ 1589 (另一种解法)
  • 原文地址:https://www.cnblogs.com/top5/p/1699474.html
Copyright © 2011-2022 走看看