即时通讯系统源代码.wps
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_05.gif)
《即时通讯系统源代码.wps》由会员分享,可在线阅读,更多相关《即时通讯系统源代码.wps(117页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。
1、 代码代码一、客户端主要代码一、客户端主要代码1.Communicationusing System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Net.Sockets;using System.Threading;using System.Net;using ClientInfo.core;using System.Xml.Serialization;using System.IO;using System.Xml;namespace ClientInfo.core pub
2、lic class MessageNotifyEventArgs:EventArgs public MessageNotifyEventArgs(Message message)this.message=message;private Message message;public Message Message get return this.message;public class Communication public static Socket socket;private Thread receiveThread;private Thread receiveTextThread;pu
3、blic event EventHandler MessageNotify;/public delegate void MessageNotifyEventArgs(object sender,MessageNotifyEventArgs e);private bool connected;public bool Connected get return connected;private bool initialized=false;/连接 public void Connect(string server,int port)if(!connected)socket=new Socket(A
4、ddressFamily.InterNetwork,SocketType.Stream,ProtocolType.Tcp);socket.Connect(new IPEndPoint(IPAddress.Parse(server),port);this.connected=true;/验证 private static ServerSendInfo ui;public static ServerSendInfo Ui get return ui;set ui=value;private static string userLName;public static string UserLName
5、 get return userLName;set userLName=value;public void Authorizate(UserInfo message)if(connected)SendMessage(message);string rece=ReceiveMessage();if(rece.Substring(0,2)=ON)throw new Exception(输入的账号或者密码错误,请重新输入!);else if(rece.Substring(0,2)=OK)this.initialized=true;this.StartReceiveMessage();XmlSeria
6、lizer xs=new XmlSerializer(typeof(ServerSendInfo);using(StringReader reader=new StringReader(rece.Substring(2)ui=(ServerSendInfo)xs.Deserialize(reader);userLName=ui.UserRealName;else if(rece.Substring(0,2)=RE)throw new Exception(重复登录:输入的账号已经登录!);private void StartReceiveMessage()receiveThread=new Th
7、read(ProcessServiceMessage);receiveThread.IsBackground=true;receiveThread.Start();/receiveTextThread=new Thread(ParameterizedThreadStart();/receiveTextThread.IsBackground=true;/receiveThread.Start();private void ProcessServiceMessage()while(true)string cmdM=ReceiveMessage();SendMessageNotify(cmdM);p
8、rivate void SendMessageNotify(string cmdM)XmlSerializer xs=new XmlSerializer(typeof(UserMessage);switch(cmdM.Substring(0,4)case TextMessage.CMDNAME:xs=new XmlSerializer(typeof(TextMessage);break;Message message;using(StringReader reader=new StringReader(cmdM.Substring(5)message=(Message)xs.Deseriali
9、ze(reader);if(this.MessageNotify!=null)this.MessageNotify(this,new MessageNotifyEventArgs(message);public string ReceiveMessage()byte msgBuffer=new byte200000;socket.Receive(msgBuffer);string msg=Encoding.UTF8.GetString(msgBuffer).TrimEnd(0);return msg;private void SendMessage(UserInfo message)strin
10、g msg=TransfromMessage(message);socket.Send(Encoding.UTF8.GetBytes(msg);private string TransfromMessage(UserInfo message)StringBuilder sb=new StringBuilder(200000);sb.AppendFormat(0:,message.CommandName);using(XmlWriter writer=XmlWriter.Create(sb)XmlSerializer xs=new XmlSerializer(message.GetType();
11、xs.Serialize(writer,message);return sb.ToString();public void SendTextMessage(TextMessage message)string msg=TransfromTextMessage(message);socket.Send(Encoding.UTF8.GetBytes(msg);public string TransfromTextMessage(TextMessage message)StringBuilder sb=new StringBuilder(200000);sb.AppendFormat(TEXT:);
12、using(XmlWriter writer=XmlWriter.Create(sb)XmlSerializer xs=new XmlSerializer(message.GetType();xs.Serialize(writer,message);return sb.ToString();2.DeptInfousing System;using System.Collections.Generic;using System.Linq;using System.Text;namespace ClientInfo class DeptInfo public DeptInfo()public De
13、ptInfo(string deptName,string deptDescription)/this.deptId=deptId;this.deptName=deptName;this.deptDescription=deptDescription;private string deptName;public string DeptName get return deptName;set deptName=value;private string deptDescription;public string DeptDescription get return deptDescription;
14、set deptDescription=value;public override string ToString()return deptName;3.RecvServerMessageusing System;using System.Collections.Generic;using System.Linq;using System.Text;using ClientInfo.core;using System.Threading;using System.Xml.Serialization;using System.IO;namespace ClientInfo public clas
15、s RecvServerMessage private static TextMessage tmsgs=new TextMessage();public static TextMessage Tmsgs get return RecvServerMessage.tmsgs;set RecvServerMessage.tmsgs=value;public RecvServerMessage()public void RecvMessage()while(true)string recvM=RecvMsg();if(recvM!=string.Empty)switch(recvM.Substri
16、ng(0,3)case TEXT:/接受用户的消息 Thread thread=new Thread(new ParameterizedThreadStart(UserMessages);thread.IsBackground=true;thread.Start(recvM.Substring(5);break;case AUTH:/登陆的信息 break;/接收消息 private string RecvMsg()byte msgBuffer=new byte200000;Communication.socket.Receive(msgBuffer);string msg=Encoding.
17、UTF8.GetString(msgBuffer).TrimEnd(0);return msg;private void UserMessages(object obj)string userMessage=(string)obj;XmlSerializer xs=new XmlSerializer(typeof(TextMessage);TextMessage tmsg;using(StringReader reader=new StringReader(userMessage.Substring(5)tmsg=(TextMessage)xs.Deserialize(reader);tmsg
18、s.Body=tmsg.Body;tmsgs.NowTimes=tmsg.NowTimes;tmsgs.Replier=tmsg.Replier;tmsgs.Sender=tmsg.Sender;4.ServerSendInfousing System;using System.Collections.Generic;using System.Linq;using System.Text;using ClientInfo.core;namespace ClientInfo Serializable public class ServerSendInfo:UserInfo private str
19、ing ssiDeptName;public string SsiDeptName get return ssiDeptName;set ssiDeptName=value;private List ssiDeptNames;public List SsiDeptNames get return ssiDeptNames;set ssiDeptNames=value;private List ssiUserName;public List SsiUserName get return ssiUserName;set ssiUserName=value;private string sUserN
20、ame;public string SUserName get return sUserName;set sUserName=value;public ServerSendInfo()ssiUserName=new List();ssiDeptNames=new List();5.TextMessageusing System;using System.Collections.Generic;using System.Linq;using System.Text;namespace ClientInfo.core public class Message public Message(stri
21、ng commandName)mandName=commandName;private string commandName;public string CommandName get return commandName;set commandName=value;public class TextMessage:Message public const string CMDNAME=TEXT;public TextMessage():base(CMDNAME)private string sender;/发送者 public string Sender get return sender;
22、set sender=value;private string replier;/接受者 public string Replier get return replier;set replier=value;private string body;/具体消息 public string Body get return body;set body=value;private string nowTimes;/发送时间 public string NowTimes get return nowTimes;set nowTimes=value;6.UserInfousing System;using
23、 System.Collections.Generic;using System.Linq;using System.Text;namespace ClientInfo.core public class UserInfo:UserMessage private string userName;public string UserName get return userName;set userName=value;private string userPassword;public string UserPassword get return userPassword;set userPas
24、sword=value;private string userNiceName;public string UserNiceName get return userNiceName;set userNiceName=value;private string userRealName;public string UserRealName get return userRealName;set userRealName=value;private string userSex;public string UserSex get return userSex;set userSex=value;pr
25、ivate string userDepart;public string UserDepart get return userDepart;set userDepart=value;private string userPhone;public string UserPhone get return userPhone;set userPhone=value;private string userEmail;public string UserEmail get return userEmail;set userEmail=value;private string userAddress;p
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 即时通讯 系统 源代码
![提示](https://www.deliwenku.com/images/bang_tan.gif)
限制150内