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

确保上一节服务器程序运行没有问题,否则请仔细看上一节

新建一个Unity3D项目(我的Unity3D版本是4.2.0)

1,在Unity3D内新建一个文件夹命名 Plugin

将下载的

客户端:

WebSocket4Net  客户端必备

http://websocket4net.codeplex.com/

WebSocket4Net.dll   这个DLL复制到
Unity3D里面刚才新建的 Plugin文件夹内(注意Unity不得使用中文)

———————————

查看Unity下面的状态面板,确保没有红色错误提示,说明引入正确

2,新建一个C#文件,命名为SsocketDemo.cs

新建后 它自动 命名和 文件名一致(Unity3D里面 C#文件名和 类名一致,暂时不支持命名空间)

添加以下命名空间:

using System.ComponentModel;
using System.Text;
using
System.Net.Sockets;

using WebSocket4Net;
using WebSocket4Net.Command;
using
WebSocket4Net.Protocol;

具体代码如下:

?





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

public
class SsokcetDemo : MonoBehaviour {

    

    // 服务器IP地址和端口号

    private
string ServerAdress ;

      

    // 玩家名字

     private
string PlayName = "LIN";

    //发送的消息

        private
string message ;

    

     

      //接收到 服务器发回来的消息

      

        private
string ServerMessage ;

    

    

    

    void
Start () {

        // 服务器IP地址和端口号

        ServerAdress = "ws://127.0.0.1:2000/";

        message = "Clients Send Message"
;

    

        

       ServerMessage = "Server Message"
;

    }

    

    

    void
Update () {

        if( websocket !=null 
&&  websocket.State != WebSocketState.None   )

        {

            

             Debug.Log( message );

             Debug.Log( websocket.State );

        }

        

    }

    

    

    

       

    

       public
WebSocket websocket ;

       

        void
OnGUI()

        {

                //绘制2个 TxtBox文本输入框

        

                PlayName = GUI.TextField(new
Rect(10, 10, 100, 20), PlayName);

                message = GUI.TextArea(new
Rect(10, 40, 200, 200), message);

                ServerMessage = GUI.TextArea(new
Rect(10, 250, 400, 200), ServerMessage);

            

            

             //连接到服务器

               if(GUI.Button(new
Rect(250, 10, 150, 40), "Client连接"))

                {

                     ClientSend();

                };

        

        

              if( websocket != null
)

               {

                 //测试向服务器发送消息

                 if(GUI.Button(new
Rect(250, 60, 150, 40), "SendMessageToServer"))

                    {

                         if( message.Length <1 || PlayName.Length < 1 )

                              return;

                

                          websocket.Send("UnityClient Send"
+ PlayName +"Say:"
+ message  );

                    };

        

                

                   //断开连接按钮

                       if(GUI.Button(new
Rect(250, 120, 150, 40), "CloseSocket"))

                      {

                       websocket.Close();

                       websocket = null;

                      };

                  }

            }

            public
void ClientSend()

              {

               websocket = new
WebSocket( ServerAdress);

                websocket.Opened += new
EventHandler(websocket_Opened);

          //   websocket.Error += new EventHandler<ErrorEventArgs>(websocket_Error);

               websocket.Closed += new
EventHandler(websocket_Closed);

                 websocket.MessageReceived += new
EventHandler<MessageReceivedEventArgs>( websocket_MessageReceived  );

                

                    websocket.Open();

             }

    

         private
void websocket_Opened(object
sender, EventArgs e)

          {

                    websocket.Send( PlayName +"Has Join The Game"
);

           }

    

        private
void websocket_MessageReceived(object
sender, MessageReceivedEventArgs e)

          {

                   ServerMessage += e.Message;

           }

       

          private
void websocket_Closed(object
sender, EventArgs e)

          {

                   websocket.Close();

           }

    

        

    

    

}

  

将代码 拖放到 Main Camera上

如图:

先启动 服务器程序

如图:

说明服务器 启动成功!

在进入 Unity3D中

没有错误的话  会出现 下图

点击 Client连接  ,  服务器端 会如下出现消息

说明 连接正常    ,让我们 测试  客户端 发消息到 服务器

在Unity3D里面第二个文本框(第一个表示玩家的名字
PlayerName ,第二个是 客户端 将要发送的消息,第三个是 服务器 相应 返回的消息 )

输入HellowSuperSocket   点击 SendMessageToServer

将会看到 如下图:

以上就是完整的程序例子,稍后将放出 客户端 和 服务器端的源码

QQ:2360450496

SuperSocket官方QQ群:373076764

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

未完,待续......

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

时间: 2024-12-12 09:06:26

SuperSocket框架学习笔记3-构建Unity3D__WebSocket4Net客户端程序的相关文章

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

SuperSocket框架学习笔记2-构建SuperWebSocket服务器程序 上一节简单介绍了 基本的SuperSocket服务器 这一节我们使用 SuperWebSocket构建一个 能与Unity3D通信的(Console控制台)服务器程序 嘎嘎 先下载   需要的  DLL类库 服务端: SuperSocket1.6.1 这个必备 http://www.supersocket.net/ SuperWebSocket 服务端必备 http://superwebsocket.codeple

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继承自

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

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

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的创建以及维护,依赖对象的创建以及维护是由外部容器负责的

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之一有一个较为全面的认识. 这个学习过程,还可以推及到其他常用开源框架和公司项目的学习和熟悉上面.借助开发工具或说明文档,先是对项目整体有一个宏观的认识,再根

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

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