SuperSocket框架学习笔记2-构建SuperWebSocket服务器程序

SuperSocket框架学习笔记2-构建SuperWebSocket服务器程序

上一节简单介绍了 基本的SuperSocket服务器

这一节我们使用 SuperWebSocket构建一个 能与Unity3D通信的(Console控制台)服务器程序

嘎嘎

先下载   需要的  DLL类库

服务端:

SuperSocket1.6.1 这个必备

http://www.supersocket.net/

SuperWebSocket 服务端必备

http://superwebsocket.codeplex.com/

客户端:

WebSocket4Net  客户端必备

http://websocket4net.codeplex.com/

一,让我们来编写服务器程序

1,打开VS2012,新建一个控制台应用程序,选择.NET4.0版本

2,添加引用

SuperSocket的dll文件(

SuperSocket.Common.dll,

SuperSocket.SocketBase.dll,

SuperSocket.SocketEngine.dll)到此项目的引用 (版本选4.0)

SuperWebSocket.dll   到此项目的引用

添加 系统的

System.Configuration;

System.Configuration.Install;  到此项目的引用

添加命名空间:

using
SuperSocket.SocketBase;

using SuperWebSocket;

在Program中 写代码

直接上代码了 ,本人菜鸟, 写的渣渣,见笑了

?





1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84

85

86

87

88

89

90

91

92

93

94

95

96

97

98

99

100

101

102

103

104

105

106

107

108

109

110

111

112

static
int ClientNum = 0;

        static
void Main(string[] args)

        {

            Dictionary<string, Player> PlayerList = new
Dictionary<string, Player>();

            List<Player> Player__List = new
List<Player>();

            Console.WriteLine("SuperWebSocket(0.8).Source服务器\n 按任意键start the WebSocketServer!");

            Console.ReadKey();

            Console.WriteLine();

            var
appServer = new
WebSocketServer();

            //Setup the appServer

            if
(!appServer.Setup(2000)) //Setup with listening port

            {

                Console.WriteLine("Failed to setup!");

                Console.ReadKey();

                return;

            }

            appServer.NewSessionConnected += new
SessionHandler<WebSocketSession>(appServer_NewClientConnected);

            appServer.NewMessageReceived += new
SessionHandler<WebSocketSession, string>(appServer_NewMessageReceived);

            appServer.SessionClosed += new
SessionHandler<WebSocketSession, CloseReason>(appServer_SessionClosed);

            Console.WriteLine();

            //Try to start the appServer

            if
(!appServer.Start())

            {

                Console.WriteLine("Failed to start!");

                Console.ReadKey();

                return;

            }

            Console.WriteLine("服务器启动成功, 按 ‘q‘ 退出服务器!");

            while
(Console.ReadKey().KeyChar != ‘q‘)

            {

                Console.WriteLine();

                continue;

            }

            //Stop the appServer

            appServer.Stop();

            Console.WriteLine();

            Console.WriteLine("The server was stopped!");

            Console.ReadKey();

        }

        static
void appServer_NewClientConnected(WebSocketSession session)

        {

            session.Send("第一次给客户端发信息Unity3DServer: ");

            Player ps = new
Player(session.SessionID);

            session.Send(MakeDataToString.PlayerString(ps));

            Console.WriteLine("客户端 :端口"
+ session.RemoteEndPoint.Port + "连接到服务器了!");

            ClientNum += 1;

            foreach
(var
ses in
session.AppServer.GetAllSessions())

            {

                ses.Send("xxx加入了游戏");

          

            }

        }

      

        static
void appServer_NewMessageReceived(WebSocketSession session, string
message)

        {

        

            session.Send("欢迎登陆本系统LinMengUnity3DServer: ");

         

            Console.WriteLine("有客户端消息"
+ message);

          

            Console.WriteLine("客户端数目"
+ ClientNum.ToString());

            foreach
(var
ses in
session.AppServer.GetAllSessions())

            {

                ses.Send("给所有客户端广播发送的消息LinMeng广播电台");

          

            }

        }

        static
void appServer_SessionClosed(WebSocketSession session, CloseReason closeRs)

        {

            session.Close();

            Console.WriteLine("客户端"
+ session.RemoteEndPoint.Port + "断开了连接!");

            ClientNum -= 1;

       

            Console.WriteLine("客户端数目"
+ ClientNum.ToString());

        }

  

新建一个 Player类

?





1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

public
class Player

   {

       public
string sessionID { get; set; }

       public
string Name { get; set; }

       public
float X { get; set; }

       public
float Y { get; set; }

       public
float Z { get; set; }

       public
Player(string
id)

       {

           this.sessionID = id;

           Name = sessionID.Substring(0, 6);

           X = -0.66666F;

           Y = 1.59666F;

           Z = 0;

       }

   }

  

新建一个 MakeDataToString类

?





1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

public
class MakeDataToString

   {

       public
static string PlayerString(Player p)

       {

           return
IDstr(p) + Namestr(p) + Xstr(p) + Ystr(p) + Zstr(p);

       }

       public
static string IDstr(Player p)

       {

           return
"<id>" + p.sessionID + "</id>";

       }

       public
static string Namestr(Player p)

       {

           return
"<name>" + p.Name + "</name>";

       }

       public
static string Xstr(Player p)

       {

           return
"<X>" + p.X + "</X>";

       }

       public
static string Ystr(Player p)

       {

           return
"<Y>" + p.Y + "</Y>";

       }

       public
static string Zstr(Player p)

       {

           return
"<Z>" + p.Z + "</Z>";

       }

   }

  

如果没有错误,启动成功,你将看到

SuperWebSocket(0.8).Source服务器\n 按任意键start the WebSocketServer!

随便按一个键

出现

服务器启动成功, 按 ‘q‘ 退出服务器!

说明服务器启动成功,否则请检查代码,或命名空间引用

QQ:2360450496

SuperSocket官方QQ群:373076764

欢迎大家来一起研究开发这个Socket框架!

以上就是全部的 服务器程序代码,下一节我们将 编写Unity3D客户端程序,GOGOGO!

Coding!!!

SuperSocket框架学习笔记2-构建SuperWebSocket服务器程序

时间: 2024-08-10 17:20:10

SuperSocket框架学习笔记2-构建SuperWebSocket服务器程序的相关文章

SuperSocket框架学习笔记3-构建Unity3D__WebSocket4Net客户端程序

确保上一节服务器程序运行没有问题,否则请仔细看上一节 新建一个Unity3D项目(我的Unity3D版本是4.2.0) 1,在Unity3D内新建一个文件夹命名 Plugin 将下载的 客户端: WebSocket4Net  客户端必备 http://websocket4net.codeplex.com/ WebSocket4Net.dll   这个DLL复制到 Unity3D里面刚才新建的 Plugin文件夹内(注意Unity不得使用中文) ----------- 查看Unity下面的状态面板

SuperSocket框架学习笔记1-启动服务器

SuperSocket 是一个轻量级的可扩展的 Socket 开发框架,可用来构建一个服务器端 Socket 程序,而无需了解如何使用 Socket,如何维护Socket连接,Socket是如何工作的.该项目使用纯 C# 开发,易于扩展和集成到已有的项目.只要你的已有系统是使用.NET开发的,你都能够使用 SuperSocket来轻易的开发出你需要的Socket应用程序来集成到你的现有系统之中. 下载地址:http://www.supersocket.net/ 1,新建一个控制台应用程序,.NE

SuperSocket框架学习笔记4-SuperWebSocket---使用SubCommandBase

首先下载所需要的 DLL http://download.csdn.net/detail/wai2dance123/7389285 或者参见第2章  到SuperSocket官网下载 http://www.cnblogs.com/xmcrew/p/3747354.html 1,新建一个 .NET4.0 控制台应用程序 命名为 DiyServers 添加以下引用 将默认的Program.cs改名为  DiyServers.cs 并添加以下命名空间 2,写自己的DSession和DServer继承自

windows下scrapy框架学习笔记—&#39;scrapy&#39; 不是内部或外部命令

最近几天在深入的学习scrapy框架,但是装完各种需要的基础包之后却发现scrapy命令在别的路径下都用不了,我一开始是把python安装在F:\Python路径下的,安装了scrapy后它默认都会安装在这个路径下,scrapy在路径F:\Python\Scripts路径下,我的scrapy命令只能在此路径下用,因此创建什么工程也都只能在此文件下. 想了一下它的工作原理:它在F:\Python\Scripts路径下,就会在Scripts文件下存在一个scrapy批处理文件,那么在DOS下想要命令

JavaSE中线程与并行API框架学习笔记——线程为什么会不安全?

前言:休整一个多月之后,终于开始投简历了.这段时间休息了一阵子,又病了几天,真正用来复习准备的时间其实并不多.说实话,心里不是非常有底气. 这可能是学生时代遗留的思维惯性--总想着做好万全准备才去做事.当然,在学校里考试之前当然要把所有内容学一遍和复习一遍.但是,到了社会里做事,很多时候都是边做边学.应聘如此,工作如此,很多的挑战都是如此.没办法,硬着头皮上吧. 3.5 线程的分组管理 在实际的开发过程当中,可能会有多个线程同时存在,这对批量处理有了需求.这就有点像用迅雷下载电视剧,假设你在同时

JavaSE中Collection集合框架学习笔记(2)——拒绝重复内容的Set和支持队列操作的Queue

前言:俗话说“金三银四铜五”,不知道我要在这段时间找工作会不会很艰难.不管了,工作三年之后就当给自己放个暑假. 面试当中Collection(集合)是基础重点.我在网上看了几篇讲Collection的文章,大多都是以罗列记忆点的形式书写的,没有谈论实现细节和逻辑原理.作为个人笔记无可厚非,但是并不利于他人学习.希望能通过这种比较“费劲”的讲解,帮助我自己.也帮助读者们更好地学习Java.掌握Java. 无论你跟我一样需要应聘,还是说在校学生学习Java基础,都对入门和进一步启发学习有所帮助.(关

JavaSE中Collection集合框架学习笔记(3)——遍历对象的Iterator和收集对象后的排序

前言:暑期应该开始了,因为小区对面的小学这两天早上都没有像以往那样一到七八点钟就人声喧闹.车水马龙. 前两篇文章介绍了Collection框架的主要接口和常用类,例如List.Set.Queue,和ArrayList.HashSet.LinkedList等等.根据核心框架图,相信我们都已经对Collection这个JavaSE中最常用API之一有一个较为全面的认识. 这个学习过程,还可以推及到其他常用开源框架和公司项目的学习和熟悉上面.借助开发工具或说明文档,先是对项目整体有一个宏观的认识,再根

j2ee开发之Spring2.5框架学习笔记

Spring 2.5框架学习笔记 1.是一个开源的控制反转IOC和面向切面AOP的容器框架 2.IOC控制反转 public class PersonServiceBean { private PersonDao personDao = new PersonDao(); publiv void save(Person person){ personDao.save(person); } } 控制反转:应用本身不负责依赖对象personDao的创建以及维护,依赖对象的创建以及维护是由外部容器负责的

Java集合框架学习笔记之集合与Collection API

一.CollectionAPI 集合是一系列对象的聚集(Collection).集合在程序设计中是一种重要的数据接口.Java中提供了有关集合的类库称为CollectionAPI. 集合实际上是用一个对象代表一组对象,在集合中的每个对象称为一个元素.在集合中的各个元素的具体类型可以不同,但一般说来,它们都是由相同的类派生出来的(而这一点并不难做到,因为Java中的所有类都是Object的子类).在从集合中检索出各个元素是,常常要根据其具体类型不同而进行相应的强制类型转换. Collection