`
net_liu
  • 浏览: 231363 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

点对点的聊天

阅读更多

点对点的聊天:

namespace Chat
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
        private Thread listenthread;//表示监听的线程
        private string msg; //要发送的消息
        private Socket socket1; //Socket类用于接收和发送信息        
        private IPEndPoint lep;

        private void listenstart()//监听发入的信息
        {
            try
            {
                while (this.socket1.Connected)
                {
                    //设置一个缓冲区
                    Byte[] stream = new Byte[1024];
                    socket1.Receive(stream);
                    //将获得的流转化为字符串类型
                    string message = Encoding.Default.GetString(stream);
                    //this.textBox1.Text=socket1.Available.ToString();
                    this.richTextBox2.AppendText(message);
                    this.richTextBox2.AppendText(" ");
                }
            }
            catch//(Exception error)
            {
                if (!this.socket1.Connected)
                {
                    socket1.Close();
                    button3.Enabled = true;
                    button5.Enabled = true;
                }
            }
        }
        private void button1_Click(object sender, System.EventArgs e)
        {
            //获取本地主机名称
            string host = Dns.GetHostName();
            this.textBox1.Text = host;

            //获取本机IP
            IPAddress[] addrs = Dns.Resolve("localhost").AddressList;
            IPAddress addr = Dns.Resolve(host).AddressList[0];
            //转化为标准的以点分隔的四部分格式
            this.textBox2.Text = addr.ToString();
        }

        private void button3_Click(object sender, EventArgs e)
        {
            //获得监听端口
            int hostport;
            try
            {
                hostport = Int32.Parse(this.textBox5.Text);
                if (hostport < 135 || hostport > 65400) hostport = 12800;
            }
            catch
            {
                hostport = 12800;
            }
            //IPAddress ipAddress = Dns.Resolve("localhost").AddressList[0];
            IPAddress ipAddress = IPAddress.Parse("0.0.0.0");
            lep = new IPEndPoint(ipAddress, hostport);
            socket1 = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
            try
            {
                socket1.Bind(lep);
                socket1.Listen(10000);
                this.statusBar1.Text = "等待连接...";
                button3.Enabled = false;
                button5.Enabled = false;
                Thread watt = new Thread(new ThreadStart(waits));
                watt.Start();

            }
            catch
            {
                button3.Enabled = true;
            }

        }
        private void waits()
        {
            try
            {
                socket1 = socket1.Accept();
                this.statusBar1.Text = "已建立连接";
                listenthread = new Thread(new ThreadStart(listenstart));
                listenthread.Start();
                button3.Enabled = false;
                button5.Enabled = false;
            }
            catch
            {
                button3.Enabled = true;
                button5.Enabled = true;
            }
        }

        private void button2_Click(object sender, EventArgs e)
        {
             if(socket1.Connected)
            {
                //将发送的字符串转换成字节数组
                msg = "<"+this.textBox3.Text+">"+this.richTextBox1.Text;
                Byte[] bytes=Encoding.Default.GetBytes(msg);
                //发送数组
                try
                {
                    socket1.Send(bytes,bytes.Length,SocketFlags.None);
                    this.richTextBox1.Text="";
                }
                catch
                {
                }                
                //this.richTextBox2.AppendText(msg);
            }
        }

        private void button4_Click(object sender, EventArgs e)
        {
            this.richTextBox2.Text = "";  
        }

        private void button5_Click(object sender, EventArgs e)
        {
            //获得连接端口
            int hostport;
            try
            {                    
                hostport=Int32.Parse(this.textBox6.Text);
                if(hostport<135||hostport>65400)hostport=12800;
            }
            catch
            {
                hostport=30000;
            }
            
            try
            {
                //得到需连接的地址
                lep = new IPEndPoint(IPAddress.Parse(this.textBox4.Text),hostport);                    
            }
            catch(Exception err)
            {
                MessageBox.Show(err.Message);
            }
            //构造socket1实例,并请求连接
            socket1= new Socket(AddressFamily.InterNetwork,SocketType.Stream,ProtocolType.Tcp);
            try
            {
                socket1.Connect(lep);
                if(socket1.Connected)this.statusBar1.Text="连接成功";
                //开始监听
                listenthread=new Thread(new ThreadStart(listenstart));
                listenthread.Start();
                button5.Enabled=false;
                button3.Enabled=false;
            }
            catch
            {
                button5.Enabled=true;
                button3.Enabled=true;
            }
        }

        private void Form1_FormClosing(object sender, FormClosingEventArgs e)
        {
            try
            {
                socket1.Close();
                if (this.listenthread!=null)
                {
                    //如果线程还处于运行状态就关闭它
                    if (this.listenthread.ThreadState==ThreadState.Running)
                    {
                        this.listenthread.Abort();
                    }
                }
            }
            catch
            {
            }
        }
    }
}

 

分享到:
评论

相关推荐

    点对点聊天

    在这个C#实现的点对点聊天项目中,我们将深入探讨相关的核心技术与知识点。 1. **C#编程语言**:C#是微软开发的一种面向对象的编程语言,广泛用于Windows、Web和移动应用程序开发。在P2P聊天应用中,C#提供了一套...

    Java实现的点对点聊天

    本项目“Java实现的点对点聊天”是使用MyEclipse 8.6这个集成开发环境开发的,主要运用Java语言来构建这样一个系统。下面我们将详细探讨相关的技术知识点。 首先,我们要理解Java的基础知识。Java是一种面向对象的...

    简单的C语言点对点聊天程序

    在这个“简单的C语言点对点聊天程序”中,我们可以学习到如何使用C语言来实现基本的通信功能,这对于初学者来说是一次宝贵的实践机会。点对点(Peer-to-Peer, P2P)聊天程序是计算机网络通信的一个经典示例,它允许...

    用C#实现点对点聊天

    本项目“用C#实现点对点聊天”旨在通过TCP/IP协议创建一个简单的点对点通信系统,使得两个用户能够进行实时聊天。TCP/IP协议是互联网通信的基础,确保了数据的可靠传输。 点对点(P2P)通信模型不同于传统的客户端-...

    点对点聊天 网络编程

    点对点聊天的小程序,发送端和接收端 可以进行循环聊天 含有注释

    C# 简单点对点聊天

    【C# 简单点对点聊天】 在IT领域,点对点(P2P,Peer-to-Peer)通信是一种常见的网络通信模式,它允许网络中的两个或多个节点之间直接进行交互,无需通过中央服务器作为中介。C#,作为一种功能强大的面向对象编程...

    点对点聊天工具

    在本文中,我们将深入探讨C#编程语言如何用于创建点对点聊天工具,以及实现这一功能所需的关键技术和概念。 首先,我们需要理解C#的基础。C#是Microsoft开发的一种面向对象的编程语言,广泛应用于Windows应用开发、...

    C#点对点聊天

    在本文中,我们将深入探讨如何使用C#编程语言构建一个点对点聊天应用程序,以及如何实现窗口震动功能。C#是一种强大的、面向对象的编程语言,由微软开发,广泛应用于Windows桌面应用、游戏开发和服务器端编程。点对...

    p2p点对点聊天

    p2p点对点聊天程序,下载试试看,很好的程序模式

    点对点聊天室程序

    在这个场景中,我们将深入探讨点对点聊天程序的实现原理和关键知识点。 1. **网络通信基础** - **TCP/IP协议**:在点对点聊天程序中,TCP(传输控制协议)通常用于保证数据的可靠传输,确保消息的完整性和顺序。 ...

    简易点对点聊天室(java)

    在这个场景下,我们看到的是一个基于Java实现的简单点对点聊天室项目。该项目由两个主要的Java源文件组成:`Myserversocket.java`和`Mysocket.java`,它们分别代表了服务器端和客户端的角色。 首先,让我们来看看`...

    C#点对点聊天室

    在点对点聊天室中,每个用户既是客户端也是服务器,需要监听来自其他用户的连接请求并能够主动向其他用户发送消息。这就涉及到多线程技术。多线程允许程序同时执行多个任务,提高应用程序的响应性和效率。在我们的...

    java点对点聊天代码

    【Java点对点聊天代码详解】 点对点(Peer-to-Peer, P2P)聊天是一种通信模式,其中每个参与者既是客户端又是服务器,可以互相发送和接收消息。在这个基于Java的简单点对点聊天系统中,我们将探讨如何构建这样一个...

    易语言点对点聊天源代码

    【易语言点对点聊天源代码】是一款使用易语言编写的简单聊天程序,适用于初学者了解和学习点对点通信的基本原理和编程技术。易语言是中国本土开发的一种面向对象的编程语言,以其易于理解和使用的汉字编程语法而得名...

    实现点对点聊天.rar

    在本文中,我们将深入探讨如何实现一个点对点聊天系统,涉及的技术包括网络编程、加密通信、数据传输协议等。 1. **网络编程基础**: - **套接字(Sockets)**:是网络编程的基本接口,用于在不同计算机之间建立...

    c# 点对点聊天程序

    综上所述,实现一个C#点对点聊天程序需要掌握网络编程基础,包括套接字操作、IP和端口的使用,以及数据的序列化与传输。同时,要熟悉多线程和异步编程,以处理并发连接和用户交互。在实际开发中,还需要关注程序的...

    点对点聊天源码.net

    点对点聊天源码是基于.NET框架,使用C#编程语言在Visual Studio 2008环境下开发的一款通信软件。这种类型的软件允许两个或多个用户之间直接进行实时交流,无需通过中央服务器作为中介,因此具有较高的隐私性和效率。...

    点对点聊天(TcpClient)

    点对点聊天是一种通信模式,其中两个设备,通常称为客户端,可以直接相互通信,而无需通过中央服务器作为中介。在本示例中,"点对点聊天(TcpClient)"使用了C#编程语言来实现这一功能。TcpClient是.NET Framework中的...

    点对点聊天(服务器端)

    点对点聊天(P2P,Peer-to-Peer)是一种通信模式,其中每个参与者既是客户端又是服务器,可以相互通信并直接交换数据。在服务器端实现点对点聊天系统涉及多个关键技术点,以下将详细阐述这些关键概念和实现步骤。 1...

Global site tag (gtag.js) - Google Analytics