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

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

首先这是登陆界面(艺术细胞不行,不能怪我- -)
这里写图片描述
这是一个类似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</
  • 24
    点赞
  • 124
    收藏
    觉得还不错? 一键收藏
  • 7
    评论
C#网页版+客户端版聊天软件源码分享(C#+长连接+Sqllite数据库实现) 今天我给大家分享一个聊天程序的源码。 网页版加客户端版并存,可以互通 我相信对大家学习和扩展这一块知识是很有用的。 我们先来看下软件结构 一个Web版一个网页版,而客户端是连接的网页的 http://localhost:53947/wwwroot/Lesktop 这个路径 http://localhost:53947/wwwroot/这一部分是网页的地址,大家可以根据自己配置情况进行修改 然后浏览一下Default.aspx页面如下 这是负面版的,客户端的也是一样的,我们先来注册 一个账户 在这里我们注册两个账户还有一个是text用来聊天对话使用 注册的方法是一样的我就不多说了。 下面登录第一个账户看看 这是登录后的效果。 单击聊天室 然后我们再登录另外一个账户text 好了大家应该能看到效果了吧。 然后咱们再发个“你好” 收到了吧,再回复一个 对就是这个效果, 再来看看桌面版的 刚才的消息都在 这是桌面版的效果。 大家感觉怎么样。 我感觉大家可以在这个基础之上进行扩展,最少可以看看他的实现思路 源码分享给大家了 sufeinet.com即时通信_云骞.zip (3.25 MB, 下载次数: 1078) ReceiveResponsesHandler 类,这个主要是用来接收和维护长连接的 实现长连接的两个重要来代码预览 [C#] 纯文本查看 复制代码 ? 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 using System; using System.Collections.Generic; using System.Collections; using System.Text; using System.Web; using System.Xml; using System.Threading; namespace Core { public class ReceiveResponsesHandler : IHttpAsyncHandler { public ReceiveResponsesHandler() { } HttpContext m_Context = null; IAsyncResult IHttpAsyncHandler.BeginProcessRequest(HttpContext context, AsyncCallback cb, Object extraData) { m_Context = context; string sessionId = context.Request.Params["SessionID"]; string clientVersion = context.Request.Params["ClientVersion"]; string serverVersion = context.Request.Params["ServerVersion"]; ResponsesListener asyncResult = new ResponsesListener(sessionId, cb, extraData); try { if (serverVersion != ServerImpl.Instance.Version) throw new IncompatibleException();
超市管理系统一般包含商品管理、库存管理、销售管理、员工管理、财务管理等模块。下面给出一个简单的超市管理系统的实现思路,供你参考: 1. 商品管理:建立商品信息表,包含商品编号、名称、进价、售价、库存量等基本信息。可以通过网页或界面实现添加、修改、删除商品信息的功能。 2. 库存管理:建立库存信息表,记录各种商品的库存量及变动情况,包括入库、出库等操作。可以通过网页或界面实现库存盘点、库存调整等功能。 3. 销售管理:建立销售信息表,记录销售单号、销售日期、销售员、销售总金额等信息。可以通过网页或界面实现销售单的添加、修改、删除等功能。 4. 员工管理:建立员工信息表,包括员工编号、姓名、性别、职位等基本信息。可以通过网页或界面实现员工信息的添加、修改、删除等功能。 5. 财务管理:建立财务信息表,记录收支情况,包括商品进货、销售收入、员工工资等。可以通过网页或界面实现财务报表的生成和查询功能。 以上是超市管理系统的基本模块,你可以使用 ASP.NET 和 C# 开发网页或界面实现相应的功能。需要注意的是,本系统为了简单起见,没有涉及到权限管理、数据备份、数据恢复、数据统计等高级功能,如果你需要这样的功能,还需要根据实际情况进行开发。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值