概 述
C#小程序第二波 - - “云中转聊天”(EX-Chat)
基本功能完成于前些日子,更多功能还在探索中
缘 由
“为什么想做这么个项目呢?”
本人在学习.NET的时候对使用Socket编程实现通信遇到的一些问题深有感触。当时懂的东西特少,以为只要在我的电脑连接网络开启Socket服务端,其他能连上网的电脑上的客户端就能连接得到。直到后来与同学在两个不同内网中测试自己写出来的程序的可用性的时候发现根本连不上,当时我还以为是自己将代码写错了才会导致这种情况,后来证明是当时的自己图样图森破。原来,Socket服务端要想让所有客户端都能连接到,必须得将其运行在连接了外网的服务器(或是电脑)上,或者还有一种方案就是对自己的电脑进行NAT穿透(也就是所谓的内网穿透吧)。苦于本人对NAT并不是特别了解,虽然知道有这么个方案,由于也没有很多空闲时间去学,于是就一直没能将其实现。没有连接到外网的电脑也不会用NAT怎么办呢?那么接下来这个项目就是介绍一种无服务器的简单通信方案。
思 路
为了解决以上所说的那些问题,我的思路大致是这样的:
首先,准备工作
由于本人想的这个方案由于比较简单,所以要求也比较低,总的来说一个能用的云数据库则足以(云数据库可以上服务供应商官网购买,如果只是感兴趣想学学,你也可以上论坛找找看有没有免费试用的)
有了云数据库之后,我们先在云数据库上面建立一张初始表用于存储用户的数据,表中的相关字段根据自己的需要自行设置,以本人项目为例,我创建的用户数据表主要包含了七个字段:用户账号、用户名、用户密码、注册时间、在线状态、最后登录时间、用户类型。
接下来 就是使用VS进行用户界面的搭建了,主要包含登录、注册、好友列表、聊天界面四个窗体。因为跟本文主题不相关,这里不进行细说,每个人都有自己的想法,只要能实现基本的功能即可。
用户界面搭建好了之后,最关键的就是注册和聊天功能了。
注册时,用户填写相关信息,点击“注册”,客户端随机生成一个长度为5的数字作为账号,并将其与用户填写的信息一起写入到用户数据表中,同时建立一张专门用于存储该用户聊天记录的表,这也就完成了聊天功能(仅文字信息)的核心部分,最后就是如何实现客户端之间的通信了。
那么如何实现通信呢?既然有说到是数据库作数据中转,那么学过数据库的同学应该就能猜到是个什么想法了吧。
其实很简单,我利用的只不过就是数据库的增删查改功能。
这里简单的叙述一下消息的发送过程:本地用户在给对方发消息的时候,本地客户端在对方的聊天记录表上插入一条记录,而对方客户端在接收这条消息时则通过Timer控件定时检查对应账号的聊天记录表,如果有新的消息,则将其打印出来。反过来,对方给本地用户发消息也是同一个道理。
其他的比如清空消息记录之类功能,原理都大同小异,只要你会SQL脚本,相信这些实现起来都不难。
具体实现
前阵子上阿里云申(ceng)请(xiao)域(pian)名(yi)的时候,顺便加价买了个共享虚拟主机普惠版。
由于廉价的一匹,得来的配置是这样的:200M的网页空间和20M的数据库空间,不过就目前来说,本人拿来学习和测试足以。
云虚拟主机被某帅比搁置了一段时间之后,终于在毫无特殊可言的某天下午迎来了它的使命。
由于是基于云数据库作数据中转的聊天程序,于是本人将项目名暂且取作“云中转聊天”(经过几个版本的迭代更新之后已更改为EX-Chat)
根据以上所述思路操作,经过多次修改,花费了好几天时间之后总算是写出了成品。
外观较为简陋,暂时只实现了基本的通信功能,并且安全性较低,只作学习和测试用。
下面放上几个主要窗体的相关截图用以参考,更多功能留作以后探索,更新日志见[此处][1],这里暂不详述
[1]: http://software.solutionx.top/云中转聊天程序/pages/02/
点击此处下载程序(出于一些个人原因,下载入口暂时已关闭)
– end 更新于:2017.11.20 end –
新版本的部分截图(1.0.4.8)
更新日志见[此处][2]
[2]: http://software.solutionx.top/云中转聊天程序/pages/04/
– end 更新于:2018.4.17 end –