两年前的一个设计,找资料时扒了出来,打开看了一下源码,那个时候的设计真是无框架无模式的设计,但对像QQ这样的聊天软件无疑是一个了解和值得参考的实例,所以大牛请绕过,在此跟大家分享一下,希望对正在学习Socket的童鞋们有点帮助,欢迎大家来拍砖,上图:

简介:
1.软件采用C/S模式,服务器基于.NET控制台应用程序,客户端基于.NET WPF,数据库采用SQL Server
2.在通信上采用TCP协议进行信息传递,以服务器转发方式通信,用户注册及密码管理基于B/S(ASP.NET)
3.主要完成了用户注册、用户密码修改、添加好友、删除好友;文字信息转发(支持字体)、抖动窗体、发送图片(支持GIF,但有严重问题)
服务器流程图:
客户端流程图:


实现:
1.发送文字
采用服务器转发方式发送,首先把消息通过相应的协议包装发送到服务器端,再由服务器端转发到指定的客户端,协议如下:
接收号码
|
字体消息头#Font
|
字体样式(包括颜色,大小,样式等等)
|
消息内容
|
服务器端接收到后按好友号码查找服务器端用户列表(如图服务器工作流程)获取Socket实例如果此好友在线就将信息发送过去
接收方接收到信息以后拆分数据,设置字体,显示消息内容。
2.发送图片
此模式有严重的问题,由于工作时间一直没有对其更新过,如果大家有兴趣可以自行修改,最好不要使用服务器转发模式,而是直接对客户端建立P2P连接。
也是采用服务器转发方式(我知道有过经验的人看到以此方式发送图片一定要拍我了),协议如下:
如何实现在此就不讲了,就是一鸡肋。
3.发送拌动窗体
抖动窗体实现很简单,按一定规律改变窗体的位置即可,协议如下:
服务器接收到此消息以后获取消息头,查找用户列表获取Socket实例,如果此好友在线就将信息发送过去
接收端接到此消息,即执行窗体抖动操作,代码如下:
/// <summary>
/// 执行抖动窗体
/// </summary>
/// <param name="talkWindow"></param>
public static void ShakeWindow(Win_Talking talkWindow)
{
if (talkWindow.WindowState == WindowState.Minimized)
{
talkWindow.WindowState = WindowState.Normal;
}
int shake = 0;
double OriginalLeft = talkWindow.Left;
double OriginalTop = talkWindow.Top;
double newLeftOne = OriginalLeft - 2; double newLeftTwo = OriginalLeft + 2;
double newTopOne = OriginalTop - 2; double newTopTwo = OriginalTop + 2;
shakePlay.Play();
while (shake < 5)
{
talkWindow.Left = newLeftOne; talkWindow.Top = newTopOne;
Thread.Sleep(50);
talkWindow.Left = newLeftTwo; talkWindow.Top = newTopTwo;
Thread.Sleep(50);
shake++;
}
talkWindow.Left = OriginalLeft;
talkWindow.Top = OriginalTop;
}
效果图如下:

4.添加好友
协议如下:
服务器接收到此消息以后,查找号码如果存在将好友添加至好友列表,并返回给用户添加成功的消息。
如果添加自己为好友或者好友已存在 ,则返回失败信息,如图:

5.删除好友
协议方式与添加好友相同,服务器接收到此消息以后会从发送此消息的用户好友列表中删除要删除的号码,并返回操作消息。
6.注册和用户密码操作
注册采用B/S模式,语言采用VB.NET,大家一定很奇怪,因为之前做过一个类似的项目用的是VB.NET语言,比较懒所以就直接拿来用了,怎样实现在此就不做多阐述,就是很简单的WEB制作,后面会讲到如何配置,直接上图:
注册:

密码找回:

如何配置:
源码当中包括两个文件夹:Server和Client,注册网站和数据库包含在Server文件夹下,目录结构如下:
注册页面:IM\Server\WebChat
数据库:IM\Server\Data
1.数据库配置
使用SQL Server 2005以上版本直接附加即可,要保证能通过系统Windows 身份验证登陆,因为服务器是以这种方式连接数据库的,数据库设计的特别烂该拍砖的尽情的拍吧
2.注册网站配置
将webchat添加到IIS管理器,并配置本地IP地址,因为在登陆窗体有一个注册新号码,是以服务器IP地址访问网站的
数据库连接在IM\Server\WebChat\App_Code\ConnectionData.vb中修改
3.客户端配置
服务器运行时会显示所监听IP的地址,在客户端有一个IpAddress.xml配置文件,在目录:
IM\Client\Client\bin\Debug\Config\IpAddress.xml
打开以后更改为运行在服务器的IP地址即可。
附:
点击下载源码
分享到:
相关推荐
1.软件采用C/S模式,服务器基于.NET控制台应用程序,客户端基于.NET WPF,数据库采用SQL Server 2.在通信上采用TCP协议进行信息传递,以服务器转发方式通信,用户注册及密码管理基于B/S(ASP.NET) 3.主要完成了用户...
在本项目中,我们探讨的是一个基于C#编程语言实现的即时通讯客户端源码。C#是一种面向对象的、类型安全的编程语言,由微软公司开发,主要用于构建Windows平台的应用程序,尤其是.NET框架下的应用。 【C#基础知识】 ...
本文将深入探讨两个基于WPF(Windows Presentation Foundation)的即时通讯(IM)聊天项目,包括“Baidu Hi - IM 源码 (UDP)”和“企业聊天软件IM源码(Socket)”。这两个项目都是用C#语言开发的,用于构建实时通信...
【标题】:“C# IM即时会议聊天服务端客户端源码”是基于C#编程语言开发的一个即时通讯(Instant Messaging, IM)系统,主要用于实现实时的会议聊天功能。该系统包含服务端和客户端两部分,提供了在线交流和会议室...
QQ聊天c#源码是一个基于C#编程语言开发的即时通讯(IM)系统,它仿照了QQ聊天软件的功能和界面设计。这个开源项目对于学习和理解IM系统的实现原理非常有帮助,因为它提供了完整的源代码,可以让开发者深入研究每一个...
本篇将深入探讨C#仿QQ聊天软件源码以及即时通信的相关知识点。 一、C#基础 C#是一种面向对象的编程语言,由微软公司开发,用于.NET Framework。它的语法简洁明了,支持类、接口、继承、多态等面向对象特性。在C#中...
【C# 仿QQ聊天源码】是一款基于C#语言实现的网络编程项目,它旨在模仿QQ聊天软件的核心功能,为学习者提供了一个实践网络通信和客户端-服务器架构的实例。通过分析和研究这个源码,我们可以深入理解C#在网络编程中的...
在本案例中,我们关注的是一个基于C#编写的即时通讯源码,它实现了点对点和群聊功能,与我们熟知的QQ等社交软件有相似之处。 首先,我们要理解C#作为编程语言的角色。C#是由微软公司开发的一种面向对象的编程语言,...
【标题】"C#完美仿QQ聊天软件MyQQ源代码"揭示了这是一份使用C#编程语言编写的,模仿腾讯QQ聊天功能的开源项目。这个项目旨在为开发者提供一个学习和研究即时通讯(IM)系统开发的实例,帮助他们理解和实现类似的聊天...
【标题】:“类似QQ的全套聊天系统[极品] 源码”指的是一个基于.NET框架开发的、模仿QQ功能的完整聊天系统源代码。这个源码可能是为了教学、研究或者二次开发的目的而提供的,旨在帮助开发者理解即时通讯(IM)系统...
【标题】"非常不错的c# 聊天程序源码" 涵盖了C#编程语言在构建聊天应用程序中的应用,特别是在即时通讯(IM)领域。C#是一种由微软开发的面向对象的编程语言,它以其强大的.NET框架支持,为开发高效、稳定的桌面和...
在计算机科学与信息技术领域,开发一款聊天软件是一项挑战性的任务,而本项目“仿QQ2008聊天程序”正是基于C#编程语言实现的类似QQ的功能强大的聊天工具。这款程序的源码为学习者提供了深入理解即时通讯(IM)系统...
飞鸽传书是一款基于P2P技术的局域网即时通讯软件,它允许用户在无需互联网的情况下进行文件传输和文字聊天。C#中的P2P编程涉及到网络套接字(Socket)、多线程以及数据包封装等技术。在飞鸽传书的源码中,我们可以...
这个项目旨在为学习者提供一个了解即时通讯软件(IM)开发的基础平台,通过研究和分析源码,开发者可以深入理解C#在构建网络应用程序中的应用,以及如何实现基本的聊天功能。 首先,我们要知道C#是微软公司推出的...
1. **.NET框架**:Gowk是基于.NET框架开发的,这是一个由微软推出的开源开发平台,支持多种语言,如C#、VB.NET等。.NET框架提供了丰富的类库,简化了网络通信、数据库交互和UI设计等工作。 2. **C#语言**:C#是.NET...
8. **客户端UI设计**:使用Windows Forms或WPF构建用户界面,提供友好且直观的聊天功能,如文本输入、表情发送、文件传输等。 9. **状态同步**:实现在线/离线状态的同步,确保用户能了解其他人的在线状态,可以...
在IT行业中,即时通讯(Instant Messaging,简称IM)是一种广泛应用于个人和企业的通信技术,它允许用户实时地发送和接收文本、语音、图像以及其他类型的数据。C#是一种由微软开发的面向对象的编程语言,特别适合...
【标题】:“仿QQ2008聊天程序(C#开发)”是一个基于C#编程语言实现的即时通讯(IM)软件项目。它包含了服务端和客户端的完整源代码,旨在为初学者提供一个学习和理解IM系统开发的实例。 【描述】:这个项目的核心...
即时通讯(Instant Messaging,IM)技术是现代计算机通信领域中的重要组成部分,尤其在移动互联网时代,它被广泛应用在社交软件、企业协作工具等场景中。本篇将详细讲解基于C#语言开发即时通讯系统的核心技术和关键...