private static void ReceiveCallback(IAsyncResult ar)//받기 { try { stateObject state = (stateObject)ar.AsyncState; Socket client = state.worksocket; int bytesread = client.EndReceive(ar); if (bytesread > 0) { state.sb.Append(Encoding.UTF8.GetString(state.buffer, 0, bytesread)); client.BeginReceive(state.buffer, 0, stateObject.buffersize, 0, new AsyncCallback(ReceiveCallback), state); } else { if (state.sb.Length > 1) { response = state.sb.ToString(); } ReceiveDone.Set(); } instance.cdivide(state); } catch (Exception e) { //Debug.Log(e.ToString()); } }
private void Receive(Socket client)//Receive { try { stateObject state = new stateObject(); state.worksocket = client; client.BeginReceive(state.buffer, 0, stateObject.buffersize, 0, new AsyncCallback(ReceiveCallback), state); } catch (Exception e) { //Debug.Log(e.ToString()); } }
public void cdivide(stateObject state)//플래그에 따라 버퍼를 나눔 { sFlag Flag = new sFlag(); Flag = (sFlag)BytetoStruct(state.buffer, typeof(sFlag), 256); //플래그 확인 if (Flag.flag == (char)eMSG.em_USER_LOGIN) { vLogin(state.buffer); //로그인 시 받는 메시지 } else if (Flag.flag == (char)eMSG.em_USER_MATCHING) { vMatching(); //매칭 시 받는 메시지 } else if (Flag.flag == (char)eMSG.em_USER_POSITION) { Set_Position(state.buffer); //위치 받을 시 받는 메시지 } else if (Flag.flag == (char)eMSG.em_USER_TEAM) { Set_Team(state.buffer); //팀 결정 시 받는 메시지 } else if (Flag.flag == (char)eMSG.em_USER_RAYSHOT) { Set_Rayshot(state.buffer); //레이에 관한 메시지 } else if (Flag.flag == (char)eMSG.em_USER_CAMERA) { Set_Camera(state.buffer); //카메라 정보값 } else if (Flag.flag == (char)eMSG.em_USER_FKEY) { Set_Fkey(state.buffer); //Fkey 정보값 } else if (Flag.flag == (char)eMSG.em_USER_ZKEY) { Set_Zkey(state.buffer); //Zkey 정보값 } else if (Flag.flag == (char)eMSG.em_USER_XKEY) { Set_Xkey(state.buffer); } else if (Flag.flag == (char)eMSG.em_USER_CKEY) { Set_Ckey(state.buffer); //Fkey 정보값 } else if (Flag.flag == (char)eMSG.em_USER_VKEY) { Set_Vkey(state.buffer); //Fkey 정보값 } else if (Flag.flag == (char)eMSG.em_USER_RKEY) { Set_Rkey(state.buffer); //Rkey 정보값 } else if (Flag.flag == (char)eMSG.em_USER_GAMEDEATH) { Set_Gamedeath(state.buffer); } else if (Flag.flag == (char)eMSG.em_USER_RESOURCE) { Set_Resource(state.buffer);//자원값 } else if (Flag.flag == (char)eMSG.em_USER_STATUS) { Set_status(state.buffer);//상태값 } else if (Flag.flag == (char)eMSG.em_OBJECT_TREE) { Set_Tree(state.buffer);//나무 상태값 } else if (Flag.flag == (char)eMSG.em_OBJECT_STONE) { Set_Stone(state.buffer);//돌 상태값 } else if (Flag.flag == (char)eMSG.em_OBJECT_BULLET) { Set_Bullet(state.buffer);//총알상자 상태값 } else if (Flag.flag == (char)eMSG.em_MAP_MAPSETTING) { //set_Mapsetting(state.buffer); } else if (Flag.flag == (char)eMSG.em_OBJECT_FLOOR) { Set_Floor(state.buffer);//박스 상태값 } else if (Flag.flag == (char)eMSG.em_USER_LOGOUT) { //게임도중 로그아웃시 설정 Set_Logout(state.buffer); } }