public void CreateRoomResult(Client client, byte[] datas) { CreateGameResult model_login; NetHelp.RecvData <CreateGameResult>(datas, out model_login); UnityEngine.Debug.Log("创建房间结果:" + model_login.RoomId); }
void Client_QueryRomme() { QueryRoomRequest model_query_room = new QueryRoomRequest(); model_query_room.RoomId = "kkk"; NetHelp.Send <QueryRoomRequest>(Op.Client.QueryRoom, model_query_room, Connection.Client.socket); }
void Client_JoinRomme(byte[] roomid) { JoinRoomRequest model_join_room = new JoinRoomRequest(); model_join_room.RoomId = roomid; NetHelp.Send <JoinRoomRequest>(Op.Client.JoinRoom, model_join_room, Connection.Client.socket); }
public void JoinRoom(Client client, byte[] datas) { ClientResult model_join_result; NetHelp.RecvData <ClientResult>(datas, out model_join_result); UnityEngine.Debug.Log("加入房间返回结果:" + model_join_result.Result); }
void Client_CreateRomme() { CreateGameRequest model_create_room = new CreateGameRequest(); model_create_room.UserName = "******"; NetHelp.Send <CreateGameRequest>(Op.Client.CreateRoom, model_create_room, Connection.Client.socket); }
public void Internal_ServerIdentifyR(BaseClient <LoginClientModel> client, byte[] datas) { RegisterResult result; NetHelp.RecvData <RegisterResult>(datas, out result); Log.WriteLine(LogLevel.Debug, "注册返回结果:{0}", result.Success); if (result.Success) { //client.State = ClientState.LoggedIn; ////发送服务器信息到登陆服务器 //ChannelData info_model = new ChannelData(); //info_model.ChannelServer = ChannelServer.Instance.Conf.Channel.ChannelServer; //info_model.ChannelName = ChannelServer.Instance.Conf.Channel.ChannelName; //info_model.ChannelHost = ChannelServer.Instance.Conf.Channel.ChannelHost; //info_model.ChannelPort = ChannelServer.Instance.Conf.Channel.ChannelPort; //info_model.cur = 0; //info_model.max = 10; //info_model.state = (int)ChannelState.Normal; //NetHelp.Send<ChannelData>(Op.Internal.ChannelStatus, info_model, client.Socket); } else { Log.Error("Server identification failed, check the password."); return; } }
public void LoginResult(Client client, byte[] datas) { ClientResult model_login; NetHelp.RecvData <ClientResult>(datas, out model_login); UnityEngine.Debug.Log("登陆返回结果:" + model_login.Result); }
void Client_ConnectOkEvent() { Debug.Log("ConnectOk"); ClientLogin model_login = new ClientLogin(); model_login.UserName = "******"; model_login.Password = "******"; NetHelp.Send <ClientLogin>(Op.Client.Login, model_login, Connection.Client.socket); }
private void OnReceive(IAsyncResult result) { try { int bytesReceived = this.socket.EndReceive(result); if (bytesReceived == 0) { this.State = ConnectionState.Disconnected; return; } //拷贝到缓存队列 for (int i = 0; i < bytesReceived; i++) { AllDatas.Add(buffer[i]); } //===解析数据=== int len = 0, command = 0; do { if (AllDatas.Count > 7) //最小的包应该有8个字节 { NetHelp.BytesToInt(AllDatas, 0, ref len); //读取消息体的长度 len += 4; //读取消息体内容 if (len <= AllDatas.Count) { NetHelp.BytesToInt(AllDatas, 4, ref command);//操作命令 byte[] msgBytes = new byte[len - 8]; AllDatas.CopyTo(8, msgBytes, 0, msgBytes.Length); AllDatas.RemoveRange(0, len); Handlers.Handle(this, command, msgBytes); } else { break; } } else { break; } } while (true); this.BeginReceive(); } catch (SocketException ex) { Debug.LogException(ex); } catch (Exception ex) { Debug.LogException(ex); } }
public void ClientLogin(BaseClient <LoginClient> client, byte[] datas) { ClientLogin model_login; NetHelp.RecvData <ClientLogin>(datas, out model_login); Log.Debug("用户名:{0},密码:{1}", model_login.UserName, model_login.Password); ClientResult result = new ClientResult(); result.Result = true; client.Send <ClientResult>(Op.Client.Login, result); }
public void Login(BaseClient <ClientData> client, byte[] datas) { ClientLogin model_login; NetHelp.RecvData <ClientLogin>(datas, out model_login); ClientResult result = new ClientResult(); result.Result = true; client.Send <ClientResult>(Op.Client.Login, result); client.t = new ClientData(); client.t.playerId = Guid.NewGuid(); Log.Debug("用户名:{0},密码:{1},playerId:{2}", model_login.UserName, model_login.Password, client.t.playerId.ToString()); }
public void QueryRoom(Client client, byte[] datas) { QueryRoomResult model_query_result; NetHelp.RecvData <QueryRoomResult>(datas, out model_query_result); for (int i = 0; i < model_query_result.result.Count; i++) { UnityEngine.Debug.Log(string.Format("房间名:{0}", model_query_result.result[i].RoomName)); } if (QueryEvent != null) { QueryEvent(model_query_result.result); } }
public async void CreateRoom(BaseClient <ClientData> client, byte[] datas) { CreateGameRequest model_create_room; NetHelp.RecvData <CreateGameRequest>(datas, out model_create_room); Log.Debug("用户名:{0},创建房间", model_create_room.UserName); var player = GrainClient.GrainFactory.GetGrain <IPlayerGrain>(client.t.playerId); var game_id = await player.CreateGame(); CreateGameResult result = new CreateGameResult(); result.RoomId = game_id.ToString(); client.Send <CreateGameResult>(Op.Client.CreateRoom, result); }
public async void JoinRoom(BaseClient <ClientData> client, byte[] datas) { JoinRoomRequest model_join_room; NetHelp.RecvData <JoinRoomRequest>(datas, out model_join_room); Guid RoooId = new Guid(model_join_room.RoomId); Log.Debug("房间id:{0}", RoooId.ToString()); var player = GrainClient.GrainFactory.GetGrain <IPlayerGrain>(client.t.playerId); GameState state = await player.JoinGame(RoooId); ClientResult result = new ClientResult(); result.Result = true; client.Send <ClientResult>(Op.Client.JoinRoom, result); }
public void Connect(Action <DeliveryConnection> onConneced) { try { //Logger.Info("[CL.DeliveryClient] Socket.Iocp,connecting... host:" + host + " port:" + port); //(x.1) Instantiates the endpoint and socket. var hostEndPoint = new IPEndPoint(NetHelp.ParseToIPAddress(host), port); var socket = new global::System.Net.Sockets.Socket(hostEndPoint.AddressFamily, SocketType.Stream, ProtocolType.Tcp); DeliveryConnection _conn = new DeliveryConnection(); _conn.Conn_OnConnected = onConneced; var receiveEventArgs = _conn.receiveEventArgs = new SocketAsyncEventArgs(); receiveEventArgs.Completed += new EventHandler <SocketAsyncEventArgs>(IO_Completed); receiveEventArgs.UserToken = _conn; _conn.Init(socket); //var buff= DataPool.BytesGet(receiveBufferSize); var buff = new byte[receiveBufferSize]; _conn.receiveEventArgs.SetBuffer(buff, 0, buff.Length); //(x.2) SocketAsyncEventArgs connectArgs = new SocketAsyncEventArgs(); connectArgs.RemoteEndPoint = hostEndPoint; connectArgs.Completed += new EventHandler <SocketAsyncEventArgs>(OnConnect); connectArgs.UserToken = _conn; socket.ConnectAsync(connectArgs); } catch (Exception ex) { Logger.Error(ex); } }
public async void QueryRoom(BaseClient <ClientData> client, byte[] datas) { QueryRoomRequest model_query_room; NetHelp.RecvData <QueryRoomRequest>(datas, out model_query_room); Log.Debug("用户名:{0},查询房间", model_query_room.RoomId); var grain = GrainClient.GrainFactory.GetGrain <IPairingGrain>(0); PairingSummary[] kkk = await grain.GetGames(); QueryRoomResult result = new QueryRoomResult(); for (int i = 0; i < kkk.Length; i++) { QueryRoomResult.QueryRoomResultItem item = new QueryRoomResult.QueryRoomResultItem(); item.RoomId = kkk[i].GameId.ToByteArray(); item.RoomName = kkk[i].Name; result.result.Add(item); } client.Send <QueryRoomResult>(Op.Client.QueryRoom, result); }
public bool Start() { Stop(); try { //Logger.Info("[CL.DeliveryServer] Socket.Iocp,starting... host:" + host + " port:" + port); connMap.Clear(); IPEndPoint localEndPoint = new IPEndPoint(String.IsNullOrEmpty(host)?IPAddress.Any: NetHelp.ParseToIPAddress(host), port); listenSocket = new global::System.Net.Sockets.Socket(localEndPoint.AddressFamily, SocketType.Stream, ProtocolType.Tcp); listenSocket.Bind(localEndPoint); // start the server with a listen backlog of 100 connections listenSocket.Listen(maxConnectCount); // post accepts on the listening socket StartAccept(null); //Logger.Info("[CL.DeliveryServer] Socket.Iocp,started."); return(true); } catch (Exception ex) { Logger.Error(ex); } return(false); }
/// <summary> ///接收完成时处理函数 /// </summary> /// <param name="e">与接收完成操作相关联的SocketAsyncEventArg对象</param> private void ProcessReceive() { // 检查远程主机是否关闭连接 if (asyn.BytesTransferred > 0) { if (asyn.SocketError == SocketError.Success) { //判断所有需接收的数据是否已经完成 if (socket.Available == 0) { //获取接收到的数据 //byte[] ByteArray = new byte[asyn.BytesTransferred]; //Array.Copy(asyn.Buffer, 0, ByteArray, 0, ByteArray.Length); //拷贝到缓存队列 for (int i = 0; i < asyn.BytesTransferred; i++) { AllDatas.Add(asyn.Buffer[i]); } //===解析数据=== int len = 0, command = 0; do { if (AllDatas.Count > 7) //最小的包应该有8个字节 { NetHelp.BytesToInt(AllDatas, 0, ref len); //读取消息体的长度 len += 4; //读取消息体内容 if (len <= AllDatas.Count) { NetHelp.BytesToInt(AllDatas, 4, ref command);//操作命令 byte[] msgBytes = new byte[len - 8]; AllDatas.CopyTo(8, msgBytes, 0, msgBytes.Length); AllDatas.RemoveRange(0, len); Handle(this, command, msgBytes); } else { break; } } else { break; } } while (true); } else if (!socket.ReceiveAsync(asyn)) //为接收下一段数据,投递接收请求,这个函数有可能同步完成,这时返回false,并且不会引发SocketAsyncEventArgs.Completed事件 { // 同步接收时处理接收完成事件 this.ProcessReceive(); } } else { this.ProcessError(); } } else { CloseSocket(this); } }