void OnReceving() { while (true) { byte[] data = new byte[1024 * 3]; if (!mIsUdp) { mSocket.Receive(data); } else { mSocket.ReceiveFrom(data, ref mRemoteIpPoint); } String msg = Encoding.Default.GetString(data); StructRequest request = NetFormatHelper.StringToStructRequest(msg); Debug.Log("수신 : " + msg); mResponse = request; mIsResponsing = true; mIsReceiving = false; } mSocket.Close(); }
bool Send(ref Socket socket, StructRequest response) { string send = NetFormatHelper.StructRequestToString(response); byte[] _data = new Byte[BYTESIZE]; _data = NetFormatHelper.StringToByte(send); try { Console.WriteLine("송신 : " + send); if (!mIsUdp) { socket.Send(_data); } else { socket.SendTo(_data, mRemoteEndPoint); } return(true); } catch (Exception err) { Console.WriteLine("Send error : Soket Close"); SocektClose(socket); return(false); } }
/* @ url : AttackBomb * @ request : * @ response : * bombIndex */ // @Send 함수가 별도로 있음 주의할 것 void AttackBomb(StructRequest request) { string user_id = request.uid; // 유저가 없을 경우 if (!mUserData.ContainsKey(user_id)) { return; } // 물풍선 위치 저장 StructUserData user_data = mUserData[user_id]; if (request.parameter.ContainsKey("bombIndex")) { user_data.bombIndex = request.parameter["bombIndex"]; } // 바로 쏴주기 떄문에 사실 필요는 없다. mUserData[user_id] = user_data; // 파라매터 Dictionary <string, string> dic_param = new Dictionary <string, string>(); dic_param["bombIndex"] = user_data.bombIndex; StructRequest res = MakeResponse(request, dic_param); // 상대 클라이언트 소켓에 물풍선 통신 Socket socket; if (request.uid == "0") { socket = mBombSocket1; } else { socket = mBombSocket2; } string send = NetFormatHelper.StructRequestToString(res); byte[] _data = new Byte[ServerNet.BYTESIZE]; _data = NetFormatHelper.StringToByte(send); try { Console.WriteLine("수신 : " + send); socket.Send(_data); } catch (Exception err) { Console.WriteLine("Send error"); return; } }
public void RequestMsg(StructRequest request) { if (mIsReceiving) { return; } string msg = NetFormatHelper.StructRequestToString(request); Debug.Log("송신 : " + msg); byte[] data = NetFormatHelper.StringToByte(msg); mSocket.Send(data); mIsReceiving = true; }
StructRequest MakeResponse(ref Socket socket, string rec_msg) { try { StructRequest request = NetFormatHelper.StringToStructRequest(rec_msg); StructRequest response = mRequestHandler.HandleRequest(request, ref socket); return(response); } catch { SocektClose(socket); Console.WriteLine("null error msg :" + rec_msg); Console.WriteLine("null error : Soket Close"); return(ErrorStructRequest()); } }