public void InitSocket() { TcpListener tl = new TcpListener(IPAddress.Parse("127.0.0.1"), 9999); tl.Start(); winform_thread_display.DisplayText(">>> server start", richTextBox1); while (true) { try { // 클라이언트 접속까지대기 TcpClient tc = tl.AcceptTcpClient(); User user = new User(); //user.chat_text_list = new List<string>(); user.tc = tc; chat.user_list.Add(user); // 각 클라이언트 별 clinet_number 컬렉션에 보관 user.user_name = count.ToString(); chat.Display_ServerOnUser_List(); count++; winform_thread_display.DisplayText(">>> client connected", richTextBox1); Data data = new Data() { keyword = "ms", room_number = "000", user_name = user.user_name, user_list = null, room_list = null, msg = "" }; chat.Send_To_Client(tc, data); Thread t = new Thread(new ParameterizedThreadStart(OnAccepted)); t.IsBackground = true; t.Start(user); } catch (SocketException se) { Console.WriteLine(se); break; } catch (Exception e) { Console.WriteLine(e); break; } } }
public void Make_Room(Data data_from_client) { if (data_from_client.keyword == "nr") { User user = Find_User(data_from_client.user_name); //이미 방이 존재 if (Find_Room(data_from_client.msg) != null) { Data data = new Data() { keyword = "ms", room_number = user.room_number ?? "000", user_name = user.user_name, user_list = null, room_list = null, msg = "from server to " + user.user_name + " : " + data_from_client.msg + "room exist" }; Send_To_Client(user.tc, data); } else if (data_from_client.msg == "000") { Data data = new Data() { keyword = "ms", room_number = user.room_number ?? "000", user_name = user.user_name, user_list = null, room_list = null, msg = "from server to " + user.user_name + " : " + data_from_client.msg + "can't make 0 room " }; Send_To_Client(user.tc, data); } else { // 기존에 참가한 방이있는지 확인 // 있으면 방에 방에있는 모두에게 메시지 + 방나가기 + 방인원 새로고침 string msg = "from server to " + user.user_name + " leave room : " + user.room_number; Room room_before = Find_Room(user.room_number); if (If_Join_Room(user)) { string after_room_number = data_from_client.room_number; data_from_client.room_number = user.room_number; data_from_client.keyword = "ro"; Room_Out(data_from_client); data_from_client.keyword = "nr"; Send_MS_All(room_before, msg); data_from_client.room_number = after_room_number; } // 방만들기 Room room = new Room(); room.chat_text_tuple = new List <Tuple <int, string, string> >(); room.cur_user_list = new List <User>(); room.room_number = data_from_client.msg; room.cur_user_list.Add(user); room_list.Add(room); user.room_number = data_from_client.msg; Refresh_User(room_before); Send_UL_All(room_before); Display_RoomList(room.room_number); Data data = new Data() { keyword = "nr", room_number = data_from_client.msg ?? "000", user_name = user.user_name, user_list = Make_User_List(room), room_list = null, msg = "you make room : " + user.room_number }; winform_thread_display.DisplayText("from " + user.user_name + " make room : " + user.room_number, richTextBox1); Send_To_Client(user.tc, data); } } }
public TcpClient InitSocket() { try { tc = new TcpClient("127.0.0.1", 9999); winformThreadDisplay.DisplayText(">>> server connected", richTextBoxMain); NetworkStream ns = tc.GetStream(); //byte[] buffer = new byte[1024]; //ns.Read(buffer, 0, buffer.Length); //string msg = Encoding.Unicode.GetString(buffer); BinaryFormatter bf = new BinaryFormatter(); object test_obj = bf.Deserialize(ns) as object; Data dataFromServer = (Data)test_obj; user.user_name = dataFromServer.user_name; user.room_number = dataFromServer.room_number; winformThreadDisplay.DisplayText(dataFromServer.user_name, textBox_name); winformThreadDisplay.DisplayText(dataFromServer.room_number, textBoxCurRoom); return(tc); } catch (SocketException se) { Console.WriteLine(se); } catch (Exception e) { Console.WriteLine(e); } return(null); }