在使用Supersocket Server的过程中,发现Server是不支持.net 3.5的.
1.Server端中的几个Command:
1 namespace SuperSocketProtoServer.Protocol.Command 2 { 3 public class CallMessage : CommandBase<ProtobufAppSession, ProtobufRequestInfo> 4 { 5 public override void ExecuteCommand(ProtobufAppSession session, ProtobufRequestInfo requestInfo) 6 { 7 Console.WriteLine("CallMessage:{0}", requestInfo.Body.CallMessage.Content); 8 var backMessage = global::SuperSocketProtoServer.Pack.BackMessage.CreateBuilder().SetContent("Hello I am from C# server by SuperSocket") 9 .Build(); 10 11 var message = DefeatMessage.CreateBuilder().SetType(DefeatMessage.Types.Type.BackMessage) 12 .SetBackMessage(backMessage).Build(); 13 using (var stream = new MemoryStream()) 14 { 15 CodedOutputStream cos = CodedOutputStream.CreateInstance(stream); 16 cos.WriteMessageNoTag(message); 17 cos.Flush(); 18 byte[] data = stream.ToArray(); 19 session.Send(new ArraySegment<byte>(data)); 20 } 21 } 22 } 23 } 24 25 namespace SuperSocketProtoServer.Protocol.Command 26 { 27 public class BackMessage : CommandBase<ProtobufAppSession, ProtobufRequestInfo> 28 { 29 public override void ExecuteCommand(ProtobufAppSession session, ProtobufRequestInfo requestInfo) 30 { 31 Console.WriteLine("BackMessage:{0}", requestInfo.Body.BackMessage.Content); 32 } 33 } 34 } 35 36 namespace SuperSocketProtoServer.Protocol.Command 37 { 38 public class PersonMessage:CommandBase<ProtobufAppSession, ProtobufRequestInfo> 39 { 40 public override void ExecuteCommand(ProtobufAppSession session, ProtobufRequestInfo requestInfo) 41 { 42 Console.WriteLine("Recv Person Message From Client."); 43 Console.WriteLine("person's id = {0}, person's name = {1}, person's sex = {2}, person's phone = {3}", 44 requestInfo.Body.PersonMessage.Id, 45 requestInfo.Body.PersonMessage.Name, 46 requestInfo.Body.PersonMessage.Sex, 47 requestInfo.Body.PersonMessage.Phone); 48 49 var person = Pack.PersonMessage.CreateBuilder().SetAge(58).SetId(333) 50 .SetName("native .net to unity3d message").SetSex(Pack.PersonMessage.Types.Sex.Male).SetPhone("+86 110") 51 .Build(); 52 var message = DefeatMessage.CreateBuilder().SetType(DefeatMessage.Types.Type.PersonMessage) 53 .SetPersonMessage(person).Build(); 54 using (var stream = new MemoryStream()) 55 { 56 CodedOutputStream cos = CodedOutputStream.CreateInstance(stream); 57 cos.WriteMessageNoTag(message); 58 cos.Flush(); 59 byte[] data = stream.ToArray(); 60 session.Send(new ArraySegment<byte>(data)); 61 } 62 } 63 } 64 }