使用C#制作一个完整的聊天系统

本文档展示了如何使用C#制作一个聊天系统,包括登陆界面、主界面和聊天界面的设计。系统采用C/S模式,登陆后启动监听线程作为服务器端。当双击好友时,作为客户端连接到对方的服务器端进行聊天。文中详细讲解了服务器端和客户端的核心代码,包括消息的接收和发送。完整源代码可供下载。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

话不多说,首先给大家看一下整体的运行效果

首先这是登陆界面(艺术细胞不行,不能怪我- -)
这里写图片描述
这是一个类似QQ主界面的界面(虽然不好看,勉强能用)
这里写图片描述
然后双击其中一个名字,进入聊天页面,另外在打开一个界面,实现双方的聊天
这里写图片描述
这里写图片描述
这就是主要的界面了,还有一些忘记密码,注册,完善个人资料等界面都比较简单,就不一一列出了。所以希望这篇博客能帮助到那些想实现一个比较完整的系统的小伙伴。
接下来就是重头戏了,核心代码了
居所周知,我们做这个聊天系统是采用的C/S模式。首先我们在登陆成功之后,都会进入到主界面,而进入到主界面之后,我们的监听线程就会启动,就相当于启动了一个服务器端。然后我们来看看这个监听线程的代码

public void listen()
        {
            Random rd = new Random();
            int port = 8080;//设置聊天程序的端口号
            IPAddress ipaddress = Dns.GetHostEntry(Dns.GetHostName()).AddressList[0];//动态的获取你电脑的Ip地址
            tcplistener = new TcpListener(IPAddress.Any, port);//设置TCP的监听器
            tcplistener.Start();//监听开始
            socketforclient = tcplistener.AcceptSocket();//用监听器获取连接进来的套接字
            if (socketforclient.Connected)//如果有套接字连接了
            {
                label1.Text = "收到了消息";
                networkstream = new NetworkStream(socketforclient);
                streamreader = new StreamReader(networkstream);
                streamwriter = new StreamWriter(networkstream);
                streamreader1 = streamreader;//创建用于传输数据的读写流
            }

        }

监听应该用一个线程来启动,所以在窗体的初始化的时候就启动这个线程。

 private void Form2_Load(object sender, EventArgs e)
        {
        listen1= new Thread(new ThreadStart(listen));
                listen1.Start();
        }

到这里,小伙伴们就会问了,哎,每个登陆进来界面的都是服务器端,那么哪个是客户端呢?
这就是本系统的精妙的地方了。细心的你一定会发现主界面有一个好友列表,当你双击好友的名字的时候,你就会以客户端的形式连接到你所点击的人的服务器端,如果他没有登陆,也就是服务器没有开始服务,那么就会有提示消息,你们也就当然无法进行聊天了。
下面就让我们来看看服务器端的核心代码。
同样的,由于双方都进入了聊天页面,双方都必须有一个接收消息的线程。

 recthread1 = new Thread(new ThreadStart(fwrec));
                recthread1.Start();

然后我们来看看接受消息这个函数

  private void fwrec()
        {
            if (form2.socketforclient.Connected)
            {
                string zhanghao = ""
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值