<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          Beetle.NetPackageTCP通訊組件

          聯(lián)合創(chuàng)作 · 2023-09-29 09:23

          Beetle.NetPackage是一個多平臺Client Socket TCP通訊組件,組件制統(tǒng)一的對象協(xié)議制定規(guī)則,可以靈活方便地通過對象來描述TCP通訊交互.支持平臺有Flash,.NET和Android。

          組件制定了不同語言平臺下訪問TCP服務(wù)的統(tǒng)一處理規(guī)則;分別有協(xié)議描述規(guī)范和消息處理控制。不同語言平臺下都提供了一致的對象和接口主要包括:IMessage,Packge,INetClientHandler和NetClient等。

          • 2013-08-23
            修復(fù)android和.net在寫入utf字符為空的錯誤
            添加消息和消息列表寫入讀取方法(.net android) 
            • android
              	<T extends IMessage> T ReadMessage(Class<T> type) throws Exception;
              	<T extends IMessage> AbstractCollection<T> ReadMessages(Class<T> type) throws Exception; void Write(IMessage msg)throws Exception;
              	<T extends IMessage> void Write(AbstractCollection<T> messages) throws Exception;
              
            • .net  
                      T Reads<T>() where T : IMessage, new();
                      IList<T> ReadMessages<T>() where T : IMessage, new(); void Write(IMessage message); void Write(IList<IMessage> messages);
              
          • 2013-08-15
            添加寫入和讀取接口IDataWriter和IDataReader.IMessage的Save和Load依賴于以上兩個接口 

          IMessage

          消息描述接口,所有通訊消息必須實(shí)現(xiàn)相關(guān)規(guī)則。

          • flase
            	public class Register implements IMessage
            	{ public var Name:String; public var EMail:String; public var City:String; public var Country:String; public var RegTime:Date; public function Register()
            		{
            		} public function Load(reader:ByteArray):void {
            			Name= reader.readUTF();
            			EMail= reader.readUTF();
            			City= reader.readUTF();
            			Country = reader.readUTF(); var dv:String= reader.readUTF();
            			RegTime=DateFormatter.parseDateString(dv);
            			
            			
            		} public function Save(writer:ByteArray):void {
            			writer.writeUTF(Name);
            			writer.writeUTF(EMail);
            			writer.writeUTF(City);
            			writer.writeUTF(Country); var d:DateFormatter =new DateFormatter();
            			d.formatString="YYYY-MM-DD HH:NN:SS";
            			writer.writeUTF(d.format(RegTime));
            			
            		
            		}
            	}
            
          • android
            public class Register implements IMessage { public String Name; public String EMail; public String City; public String Country; public Date RegTime;
            	
            	
            	@Override public void Load(DataInputStream stream) throws Exception { // TODO Auto-generated method stub Name = stream.readUTF();
            		EMail = stream.readUTF();
            		City = stream.readUTF();
            		Country = stream.readUTF();
            		String format = "yyyy-MM-dd HH????ss";
            		SimpleDateFormat sdf = new SimpleDateFormat(format);
            		RegTime = sdf.parse(stream.readUTF());
            	   
            		
            	}
            
            	@Override public void Save(DataOutputStream stream) throws Exception { // TODO Auto-generated method stub stream.writeUTF(Name);
            		stream.writeUTF(EMail);
            		stream.writeUTF(City);
            		stream.writeUTF(Country);
            		String format = "yyyy-MM-dd HH????ss";
            		SimpleDateFormat sdf = new SimpleDateFormat(format);
            		stream.writeUTF(sdf.format(RegTime));
            	}
            
            }
            
          • c#
                public class Register:Beetle.NetPackage.IMessage
                { public String Name; public String EMail; public String City; public String Country; public DateTime RegTime; public void Load(Beetle.NetPackage.BufferStream reader)
                    {
                        Name = reader.ReadUTF();
                        EMail = reader.ReadUTF();
                        City = reader.ReadUTF();
                        Country = reader.ReadUTF(); string date = reader.ReadUTF();
                        Console.WriteLine(date);
                        RegTime = DateTime.ParseExact(date, "yyyy-MM-dd HH????ss", CultureInfo.InvariantCulture);
                    } public void Save(Beetle.NetPackage.BufferStream writer)
                    {
                        writer.WriteUTF(Name);
                        writer.WriteUTF(EMail);
                        writer.WriteUTF(City);
                        writer.WriteUTF(Country);
                        writer.WriteUTF(RegTime.ToString("yyyy-MM-dd HH????ss"));
                    }
                }
            

          Package

          該對象是用于通訊協(xié)議描述,默認(rèn)實(shí)現(xiàn)4字節(jié)描述消息大小規(guī)范。Package的主要工作是對象寫入通訊數(shù)據(jù)和從通訊數(shù)據(jù)獲取對象。對象只是提供一個基礎(chǔ)的處理規(guī)則,在應(yīng)用中使用者必須從此類的基礎(chǔ)上派生出新的協(xié)議處理對象。

          • flash
            	public class NPPackage extends Package
            	{ public function NPPackage()
            		{ super();
            		} protected override function WriteMessageType(writer:ByteArray, message:IMessage):void {
            			writer.writeUTF(flash.utils.getQualifiedClassName(message));	
            		} protected override function GetMessage(reader:ByteArray):IMessage
            		{ var name:String = reader.readUTF(); if(name=="Register") return new Register(); return null;
            		}
            	}
            
          • android
            public class NPPackage extends Package {
            
            	@Override protected void WriteMessageType(DataOutputStream writer, IMessage message) throws Exception { // TODO Auto-generated method stub writer.writeUTF(message.getClass().getSimpleName());
            	}
            
            	@Override protected IMessage GetMessage(DataInputStream reader) throws Exception { // TODO Auto-generated method stub String name= reader.readUTF(); if(name.equals("Register")) return new Register(); return null;
            	}
            
            }
            
          • c#
                class NPPackage:Beetle.NetPackage.Package
                { protected override void WriteMessageType(Beetle.NetPackage.BufferStream writer, Beetle.NetPackage.IMessage message)
                    {
                        writer.WriteUTF(message.GetType().Name);
                    } protected override Beetle.NetPackage.IMessage GetMessage(Beetle.NetPackage.BufferStream reader)
                    { string Name = reader.ReadUTF(); switch (Name)
                        { case "Register": return new Register();
                        } return null;
                    }
                }
            

          INetClientHandler

          該接口主要用于描述TCP連接處理規(guī)則,包括有數(shù)據(jù)接收事件,錯誤處理事件,連接創(chuàng)建成功和失敗事件。 

           

          public interface INetClientHandler { void Receive(NetClient client, Object msg); void Error(NetClient client, Exception e); void Disposed(NetClient client); void Connected(NetClient client);
          
          }

           

          NetClient

          該對象主要用于創(chuàng)建TCP通訊和進(jìn)行消息發(fā)送接收處理。

          • flash
            mClient = new NetClient("127.0.0.1",9088,new NPPackage(),new NetClientHandler(
            	ClientReceive,ClientError,ClientDisposed,ClientConnected));
            mClient.SocketEndian = Endian.BIG_ENDIAN;
            mClient.Connect();
            
          • android
            mClient = new NetClient("10.0.2.2", 9088, new NPPackage(), this);
            mClient.Connect();
            
          • c#
            mClient = new Beetle.NetPackage.NetClient("127.0.0.1", 9088, new NPPackage(), this);
            mClient.LittleEndian = false;
            mClient.Connect();
            

          瀏覽 15
          點(diǎn)贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          編輯 分享
          舉報(bào)
          評論
          圖片
          表情
          推薦
          點(diǎn)贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          編輯 分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  免费乱伦网站 | www黄色在线观看 | 青草2017男人天堂 | 99精品视频网站 | 一区在线视频播放 |