//初始化 void InitSocket() { currentjoin = new JoinPlayer(); dpsend = new DgramPlayer(transform); MyIP = GetIPAddress(); dpsend.IP = MyIP; PlayerList = new Dictionary <string, OtherPlayer>(); //发送 sock = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp); //初始化一个Scoket实习,采用UDP传输 clientEnd = new IPEndPoint(IPAddress.Broadcast, 9095); //初始化一个发送广播和指定端口的网络端口实例 sock.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.Broadcast, 1); //设置该scoket实例的发送形式 //接受 socket = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp); //初始化一个Scoket协议 ipEnd = new IPEndPoint(IPAddress.Any, 9095); //初始化一个侦听局域网内部所有IP和指定端口 ep = (EndPoint)ipEnd; socket.Bind(ipEnd); //绑定这个实例 print("waiting for UDP dgram"); //开启一个线程连接 connectThread = new Thread(new ThreadStart(SocketReceive)); connectThread.Start(); InvokeRepeating("SocketSend", 0, 0.04f); }
public IHttpActionResult PostJoinGame(JoinPlayer player) { String result = ""; JoinPlayer jp = new JoinPlayer(); jp.PlayerName = player.PlayerName; jp.GameCode = player.GameCode; GameHub.JoinGame(jp); try { if (this.ModelState.IsValid) { DataAccess access = new DataAccess(); access.JoinGame(player); result = "You have successfully joint the game(" + player.GameCode + ")"; } } catch (Exception e) { result = "Joining game has error"; } return(CreatedAtRoute("DefaultApi", new { id = 1 }, result)); }
private void ProcessJoinPlayer(JoinPlayer packet) { lock (players) players.Add(packet.Player); if (onJoinPlayer != null) { AddTask(() => onJoinPlayer.Invoke(packet)); } }
public void OnJoinPlayer(JoinPlayer packet) { var inputPlayer = packet.Player; if (File.Exists("players\\" + packet.Player.PlayerId)) { var json = File.ReadAllText("players\\" + packet.Player.PlayerId); packet.Player = JsonConvert.DeserializeObject <EzPlayer>(json); foreach (var pair in inputPlayer.Property) { packet.Player.Property[pair.Key] = pair.Value; } } lock (Sessions) { EzPlayer rootPlayer = null; if (Sessions.Count > 0) { Sessions.Broadcast(packet); rootPlayer = Sessions.First().Player; } else { rootPlayer = packet.Player; } lock (WorldProperty) { SendPacket(new WorldInfo() { RootPlayerId = rootPlayer.PlayerId, Player = packet.Player, OtherPlayers = Sessions.Select(x => x.Player).ToArray(), Property = WorldProperty }); } Sessions.Add(this); Console.Title = $"GSF.Ez, {Sessions.Count} user(s) online"; } Player = packet.Player; }
private void SendJoinRoomListResponse(JoinRoomListResponseEvent e) { var msg = ResponseJoinRoomListMessage.Allocate(); msg.HallRoomId = e.HallRoomId; msg.RetCode = e.RetCode; foreach (var info in e.JoinRoomResponseInfoList) { var player = JoinPlayer.Allocate(); player.RetCode = (int)info.ErrCode; player.Id = info.PlayerId; player.Token = info.Token; msg.Players.Add(player); } SendAndReleaseMessage(_serverChannel, RpcMessageType.ResponseJoinRoomList, msg); }