星之烁

星烁小屋

  博客园 :: 首页 :: 联系 :: 订阅 订阅 :: 管理
  3 Posts :: 6 Stories :: 8 Comments :: 0 Trackbacks

公告

昵称:星之烁
园龄:3年2个月
粉丝:1
关注:1

搜索

 
 

常用链接

我的标签

最新评论

2011年1月4日 #

   今天下了一个Office2010是.exe的,习惯性的右键,一看可以解压,于是呼直WinRAR直接解到当前目录,安装之,赫然的“Error 安装程序包的语言不受系统支持”显示在我面前。百度找了很多方法,原来是微软这个小捣蛋,嘿嘿,打开开始菜单,运行,直接把安装程序拖到打开里,神奇吧,路径就这样上去了。
例如:"F:\软件\office2010_ProfessionalPlus_chs.exe" /extract:"F:\软件\Office 2010"

OK,是的,它在解,真的在解压哦,解完后在进目录用Setup.exe安装吧。

PS.用WinRAR解完目录架构不对,自解压完后可以清晰的看到目录架构,难怪呢。以后还是老实点吧。

posted @ 2011-01-04 12:48 星之烁 阅读(1987) 评论(0) 编辑

2008年11月18日 #

首先是LoginGate(登录网关)

LoginGate<->LoginServer,LoginGate开启监听后,会启动一个Timer控件,2秒左右向LoginServer发送"%--$",可能是判断是否与LoginServer断开连接,LoginServer接收到%--$,会返回一个"%++$"的信息给LoginGate,表示已经收到消息了。

Mir3Client<->LoginGate<->LoginServer,客户端连接到LoginGate时,LG会向LS发送一条以%O+Mir3ClientSocket句柄+"/"+Mir3Client的IP+$,当Mir3Client发送账号密码后,LG会向LS发送"%A"+"Mir3ClientSocket句柄"+"/"+收到的消息+"$",然后LS处理该封包后,返回给LG一条这样的消息"%"+"Mir3ClientSocket"+"/"+"回溃给Mir3Client的消息"+"$",然后,LG会把收到的回溃消息处理后发送给Mir3Client,当Mir3Client断开连接的时候,LG会发一个"%X"+"Mir3ClientSocket句柄"+"$"给LS说明该Socket断开连接。

其次是SelGate(选人网关)

Mir3Client<->SelGate<->DBServer

SG<->DB:5100进行通讯他们之间也会像LG<->LS之间发送"%--$"与"%++$",所有从SG->DB的信息都以"%"开头,以"$"结束。当Mir3Client首次连接SG的时候,SG->DB("%O"+"Socket句柄"+"/"+"Mir3Client的IP"+"$"),DB会确定是哪个Mir3,当Mir3Client选定分区后,SG->DB("%A+"句柄"+"/"+"收到的消息"+"$",DB处理后->SG("%"+"句柄"+"/"+"要发到Mir3Client的内容"+"$"),SG处理消息后发送给Mir3Client,当Client断开后发一个"%X"+"句柄"+"$"到DB表示这个句柄断开了。

最后是GameGate(游戏网关)

还在研究中。呼呼。研究完了。在完善这部分。

posted @ 2008-11-18 15:50 星之烁 阅读(2135) 评论(4) 编辑

由于CSharp提供很好Socket封装的类,所以写起来也很方便~~~

监听TcpListener ServerSocket;
与LoginSvr之间的通讯TcpClient ClientSocket;

其实,很多朋友在这里,都会觉得在这一方面很困惑,觉得没有像Delphi有控件。其实,CSharp更简单。

public void StartServer()
{
    
// 创建一个监听本地7000端口的ServerSocket对象
    ServerSocket = new TcpListener(5500);
    
// 开始监听本地7000端口
   ServerSocket.Start();
}

以上代码,就实现了对本地7000端口的的监听,是不是很简单呢?下面来讲如何监听有客户端访问。

public void StartServer()
{
    
// 创建一个监听本地7000端口的ServerSocket对象
    ServerSocket = new TcpListener(5500);
    
// 开始监听本地7000端口
    ServerSocket.Start();
    
// 异步监听客户端访问,其实这里相当于新启动了一个进程。
    ServerSocket.BeginAcceptTcpClient(new AsyncCallback(ComplageAcceptTcpClient), null);
}

private void ComplageAcceptTcpClient(IAsyncResult ar)
{
    
// 监听是否有客户端传入,相当于Console.Read()一样。接收到有传入,就把传入的信息赋予Client。
    TcpClient Client = ServerSocket.EndAcceptTcpClient(ar);
}

这面就实现了对客户的监听,是不是很简单呢?下面来谈谈收到用户信息后如果处理。在DELPHI里,用了一个Timer对UserSession进行遍历然后发送。这里,其实也可以,不过既然有这么好的封装,何不创建一个Session的对象呢?

创建一个Session的类

这样,就OK了。是不是很简单?

开始监听是否有客户端传入

这样,就完成了打开7000端口并监听客户端,是不是很简单呢?

个人博客:星烁小屋(http://www.zks.cn/)

引用:http://www.zks.cn/article.asp?id=45

posted @ 2008-11-18 14:56 星之烁 阅读(489) 评论(2) 编辑