您的位置:首页 > 其它

急急如律令!火速搭建一个即时通讯系统!(附源码分享——高度可移植!)

2016-01-26 15:53 507 查看
人在外包公司,身不由己!各种杂七杂八的项目都要做,又没有自己的技术沉淀,每次涉足新的项目都倍感吃力,常常现学现卖,却不免处处碰壁!当然,话说回来,也是自己的水平有限在先,一马配一鞍,无奈也只能留在外包公司。

这不,就在上一周,领导下达一个任务:3天内搭建一个即时通讯系统,与原有的办公系统集成。

我正心里犯嘀咕;“网络编程自己就只知道一点皮毛啊,还是大学选修课上听老师讲的那一点东西,别说即时通讯了,以前也就只照着书上的例子写过一个抓包工具当作业交过,彻头彻尾的小白啊,何况都毕业几年了,连“套接字”都快忘了!”

领导补充说:“这个即时通讯系统要尽快完成,之后还有别的的项目。”

我:“······好的”

没办法,就像领导常说的“有条件要上,没有条件创造条件也要上!”,临危受命,唯有逆流而上!

想都别想,写即时通讯总不能从socket写起啊,那样写出来的东西只能读书的时候当作业交给老师看下,然后记一个平时成绩,给领导看那就是找抽!

所以,只能“登高而招,顺风而呼”,园子里大神多,资源也多,找找看有没有可以参考的。(这也是我一直以来的工作方法,呵呵)

终于,看到了一篇轻量级通信引擎StriveEngine —— C/S通信demo(2) —— 使用二进制协议 (附源码)研究学习了一下,稍加揣摩,很快就完成了领导所交付的重任!在此要鸣谢该文的作者!

言归正传,接下来就把自己的学习所得以及编写过程详尽的分享给大家!

一·界面快照

void tcpPassiveEngine_MessageReceived(IPEndPoint userAddress, byte[] msg)
{
//取出消息类型
int msgType = BitConverter.ToInt32(msg, 0);
//验证消息类型
if (msgType == MsgType.Chatting)
{
ChatMsg chatMsg = MsgHelper.DeserializeMsg<ChatMsg>(msg);
this.ShowChatForm(chatMsg.SourceUserID);
this.ChatMsgReceived(chatMsg);
}
}

/// <summary>
/// 显示聊天窗
/// </summary>
/// <param name="friendUserID">聊天对方用户ID</param>
private void ShowChatForm(string friendUserID)
{
if (this.InvokeRequired)
{
this.Invoke(new CbGeneric<string>(this.ShowChatForm), friendUserID);
}
else
{
ChatForm form = this.chatFormManager.GetForm(friendUserID);
if (form == null)
{
form = new ChatForm(this.selfID, friendUserID, this, this.tcpPassiveEngine);
form.Text = string.Format("与{0}对话中···", friendUserID);
this.chatFormManager.Add(form);
form.Show();
}
form.Focus();
}
}

/// <summary>
/// 显示聊天消息
/// </summary>
/// <param name="chatMsg"></param>
private void ShowChatMsg(ChatMsg chatMsg)
{
if (this.InvokeRequired)
{
this.Invoke(new CbGeneric<ChatMsg>(this.formMain_chatMsgReceived), chatMsg);
}
else
{
this.richTextBox_display.AppendText(chatMsg.SourceUserID + "   " + chatMsg.TimeSent.ToString() + "\r\n");
this.richTextBox_display.AppendText(chatMsg.MsgText + "\r\n");
this.richTextBox_Write.Clear();
}
}


View Code

五·即时通讯源码下载

源码说明:1.客户端与服务端均含有配置文件,可配置进程的IP与端口号。
2.代码均含有详细注释。
3.调试时确保客户端的配置文件相关信息无误,先启动服务端再启动客户端。
4.登录账号与密码均为任意。
5.点击好友头像即可聊天。
下载:Chat.Demo
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: