阿赛·游梦鱼·郭言赛·阿赛工作室
全站技术源码素材

一个简单的多线程即时通讯程序(类似QQ,MSN)

  •  字体:
  • 本文实现一个简单的多线程客户/服务器即时通讯应用程序,它将使用TCP连接。允许客户之间及客户 和服务器之间,个人消息与会议通信。最终目标是实现象雅虎/msn这样的即时通讯工具。

    [库]

    我创建一个ChatLibrary,它包含命令及可以着色的消息。public enum Command
    {
    Login = 0,
    PersonalMessage = 1,
    ClientList = 2,
    Conference = 3,
    Logout = 4
    };
    public class Message
    {
    string strSender;
    string strReceiver;
    Command cmdMessageCommand;
    string strMessageDetail;
    public Message ()
    {
    }
    public Message (byte [] rawMessage)
    {
    string strRawStringMessage = System.Text.Encoding.ASCII.GetString (rawMessage);
    string [] strRawStringMessageArray = strRawStringMessage.Split(new char []{'|'});
    this.strSender = strRawStringMessageArray[1];
    this.strReceiver = strRawStringMessageArray[2];
    this.cmdMessageCommand = (Command) Convert.ToInt32(strRawStringMessageArray[3]);
    this.MessageDetail = strRawStringMessageArray[4];
    }
    ...
    public byte [] GetRawMessage ()
    {
    System.Text.StringBuilder sbMessage = new System.Text.StringBuilder ("John");
    sbMessage.Append("|");
    sbMessage.Append(strSender);
    sbMessage.Append("|");
    sbMessage.Append(strReceiver);
    sbMessage.Append("|");
    sbMessage.Append((int)cmdMessageCommand);
    sbMessage.Append("|");
    sbMessage.Append(strMessageDetail);
    sbMessage.Append("|");
    return System.Text.Encoding.ASCII.GetBytes(sbMessage.ToString());
    }
    ...


    MapSiteMapRssGoTop