c# 仿QQ程序(4)

2009年3月28日星期六

c# 仿QQ程序(4)

添加新类 Server qq服务器具体功能类 这里用到了opDate类



using System;
using System.Collections.Generic;
using System.Text;
using System.Net;
using System.Net.Sockets;
using System.Threading;
using System.IO;



public class Server
{
private Thread qSerTh; //线程
private bool ServerRun = true;
private TcpListener qTcpListener = null;
private string[] parameter = new string[3];//保存接收的参数
IPEndPoint qSerIpendPoint;
public bool IniServer(string ip, string port)
{ //接受服务器ip和端口
try
{
int ipPort=Int32.Parse(port);
IPAddress ipAdd=IPAddress.Parse(ip);
qSerIpendPoint = new IPEndPoint(ipAdd, ipPort);
return (true);
}
catch
{
return (false);
}
}
public bool StartServer()
{ //启动服务器

try
{
qTcpListener = new TcpListener(qSerIpendPoint);
qTcpListener.Start();
qSerTh = new Thread(new ThreadStart(QQServerIng));
ServerRun = true;
qSerTh.Start();
return (true);
}
catch
{
return (false);
}
}
public bool StopServer()
{ //暂停服务
try
{
ServerRun = false;
qTcpListener.Stop();
qSerTh.Abort();
return (true);
}
catch
{
return (false);
}
}
private void QQServerIng()
{ //获取客户端请求,并监听
try
{
while (ServerRun)
{
Socket QS;
QS = qTcpListener.AcceptSocket();
string RemoteEndPoint = QS.RemoteEndPoint.ToString();
Byte[] Stream = new Byte[1024];
QS.Receive(Stream); //接收客户端数据
string save = System.Text.Encoding.UTF8.GetString(Stream);
string Sendmsg = "";
CheckOutDate(save);

switch (parameter[0])
{
case "1"://验证用户登陆消息
if (opDate.qUserLogin(parameter[1], parameter[2]))
{
Sendmsg = "1";
XmlOperate.AddOnlineUser(parameter[1], RemoteEndPoint);
}
else
{
Sendmsg = "0";
}
SendMsg(QS, Sendmsg);
break;
case "2"://发送好友分组资料请求
XmlOperate friend = new XmlOperate();
string FileUrl = "";
while ((FileUrl = friend.MakeFriendXml(parameter[1])) == "-1")
{ }
SendFile(QS, FileUrl);
XmlFileOp.DelThisFile(FileUrl);
break;
case "3"://发送群组资料请求
break;
case "4"://发送查找结果
break;
case "5"://注册用户
break;
case "6"://请求在线用户列表
SendFile(QS, "onlineinf\\onLine.xml");
break;
case "7"://添加好友 消息格式为:类型号;好友拥有者,好友号码
Sendmsg = opDate.AddFriend(parameter[1].Trim(), parameter[2].Trim());
SendMsg(QS, Sendmsg);
break;
default://发送错误参数
break;
}
QS.Close();
}
}
catch { }
}

private void SendMsg(Socket So, string msg)
{
UTF8Encoding SendByte = new UTF8Encoding();
So.Send((SendByte.GetBytes(msg)));
}

private void SendFile(Socket So, string FileUrl)
{
So.SendFile(FileUrl);
}

private void CheckOutDate(string str)
{
for (int i = 0; i < 3; i++)
{
parameter[i] = "";
}
int j = 0;//参数指针
for (int i = 0; i < str.Length; i++)
{
if (str[i] != ';')
{
if (str[i] == '\0')
{
break;
}
parameter[j] += str[i].ToString().Trim();
}
else
{
j++;
}
}
}
}




添加新类 Zone.ZoneInf



using System;
using System.Collections.Generic;
using System.Text;
using System.Data;
using System.Data.SqlClient



namespace Zone
{
public class ZoneInf
{
private string ZoneUser = "";
private bool haszone = false;

// 获取该用户是否有空间,只读

public bool HasZone
{
get
{
return (haszone);
}
}
private string zonename = "";

// 获取或设置qq空间的名称

public string ZoneName
{
get
{
return (zonename);
}
set
{
if (value.Trim() != "")
{
zonename = value;
}
else
{
zonename = "没有命名";
}
}
}
private string zonestyle = "";

// 获取或设置qq空间的样式

public string ZoneStyle
{
get
{
return (zonestyle);
}
set
{
if (value.Trim() != "")
{
zonestyle = value;
}
else
{
zonestyle = "默认";
}
}
}
private string zonebgsound = "";
// 获取或设置qq空间的背景音乐

public string ZoneBgSound
{
get
{
return (zonebgsound);
}
set
{
if (value.Trim() != "")
{
zonebgsound = value;
}
else
{
zonebgsound = "0";
}
}
}
private string zonedes = "";


// 获取或设置qq空间的描述信息

public string ZoneDes
{
get
{
return (zonedes);
}
set
{
if (value.Trim() != "")
{
zonedes = value;
}
else
{
zonedes = "没有描述信息";
}
}
}
private string zonebgimg = "";

//获取或设置qq空间的背景图片

public string ZoneBgImg
{
get
{
return (zonebgimg);
}
set
{
if (value.Trim() != "")
{
zonebgimg = value;
}
else
{
zonebgimg = "0";
}
}
}
public ZoneInf(string uid)
{
ZoneUser = uid;
}

// 执行ZONE命令

public bool doZoneCommand(string model)
{
switch (model.Trim())
{
case "GET":
GetZoneInf();
break;
case "SET":
SetZoneInf();
break;
case "NEW":
return (MakeNewZone());
default:
break;
}
return(true);
}
private void GetZoneInf()
{
DataSet tempDs = new DataSet();
tempDs = opDate.GetZoneInf(ZoneUser);
if (tempDs.Tables[0].Rows.Count != 0)
{
haszone = true;
zonename = tempDs.Tables[0].Rows[0]["vcZoneName"].ToString();
zonestyle = tempDs.Tables[0].Rows[0]["iStyId"].ToString();
zonebgsound = tempDs.Tables[0].Rows[0]["vsBgSound"].ToString();
zonedes = tempDs.Tables[0].Rows[0]["tZoneDes"].ToString();
zonebgimg = tempDs.Tables[0].Rows[0]["vcZoneBgImg"].ToString();
}
tempDs.Dispose();
}
private void SetZoneInf()
{
StringBuilder sql = new StringBuilder();
sql.Append("update ZoneInf set vcZoneName='");
sql.Append(zonename + "',vcZoneBgImg='");
sql.Append(zonebgimg + "',vsBgSound='");
sql.Append(zonebgsound + "',tZoneDes='");
sql.Append(zonedes + "',iStyId='");
sql.Append(zonestyle + "' where cZoneOwner='");
sql.Append(ZoneUser + "'");
opDate.doZoneCommand(sql.ToString());
}
private bool MakeNewZone()
{
StringBuilder sql = new StringBuilder();
sql.Append("insert into ZoneInf(cZoneOwner,vcZoneName,vcZoneBgImg,vsBgSound,tZoneDes,iStyId) values('");
sql.Append(ZoneUser + "','" + zonename + "','" + zonebgimg + "','" + zonebgsound + "','" + zonedes + "','" + zonestyle + "')");
return (opDate.doZoneCommand(sql.ToString()));
}
}
public class Art
{
private string artid = "";
private string artname="";

// 获取文章标题,只读

public string ArtTitle
{
get
{
return(artname);
}
}
private string pubtime="";

// 获取发表时间,只读

public string PubTime
{
get
{
return(pubtime);
}
}
private string artcontent="";

// 获取文章内容

public string ArtContent
{
get
{
return(artcontent);
}
}
private string browsecount = "";

// 浏览次数

public string BrowseCount
{
get
{
return (browsecount);
}
}

// 获取最新的文章列表

public static string GetArtListByUser(string UserId)
{
StringBuilder str = new StringBuilder();
DataSet ds=new DataSet();
ds = opDate.GetArtList("0", "0", UserId);
for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
{
str.Append("
");
str.Append((i + 1).ToString().Trim());
str.Append("
");
str.Append(ds.Tables[0].Rows[i]["vcArtName"].ToString().Trim());
str.Append("
");
str.Append(ds.Tables[0].Rows[i]["cPubTime"].ToString().Trim());
str.Append("
");
str.Append("");
}
return (str.ToString());
}

// 通过模块名称获取文章列表

public static string GetArtListByModel(string ModelId, string UserId)
{
StringBuilder str = new StringBuilder();
DataSet ds = new DataSet();
ds = opDate.GetArtList("1", ModelId, UserId);
for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
{
str.Append("
");
str.Append((i + 1).ToString().Trim());
str.Append("
");
str.Append(ds.Tables[0].Rows[i]["vcArtName"].ToString().Trim());
str.Append("
");
str.Append(ds.Tables[0].Rows[i]["cPubTime"].ToString().Trim());
str.Append("
");
str.Append("");
}
return (str.ToString());
}
public Art(string ArtId)
{
artid = ArtId;
GetArt();
}
private void GetArt()
{
SqlDataReader dr = opDate.ReadArtById(artid);
artname = dr["vcArtName"].ToString();
pubtime = dr["cPubTime"].ToString();
artcontent = dr["tArtContent"].ToString();
browsecount = dr["iBrowseCount"].ToString();
}
}
}

0 评论:

发表评论