-
C# - ECHO 채팅 서버 - Server 코드스마트팩토리 개발자 교육(23.05.08 ~ 23.10.27)7/네트워크 기초이론 2023. 5. 18. 17:20
*서버
1. TcpListener에 바인딩할 IpAdress와 ,port 번호를 지정해 주고
서버는 리슨을 시작한다
// IP 4바이트 주소를 직접 숫자로 적어서 사용 IPAddress ip2 = new IPAddress(new byte[] { 0, 0, 0, 0 }); // 문자를 ip 주소로 변환 IPAddress ip1 = IPAddress.Parse("0.0.0.0"); int port = 9876; // Listener 생성 // IP, Port 번호가 필요하다 TcpListener listener = new TcpListener(ip1, port); listener.Start();2. 채팅을 받을 buffer와 인코딩한 정보를 저장한 string을 생성해준다
byte[] buff = new byte[1024]; string Listenmsg = "";3. Client 통신 요청을 받을 TcpClient 와 정보를 주고받을 NetworkStream 생성한다
// 클라이언트 통신요청 받는 TcpClient 생성 TcpClient tcpClient = listener.AcceptTcpClient(); // 클라이언트와 정보를 주고 받을 stream 생성 // NetworkStream 객체 저장 NetworkStream stream = tcpClient.GetStream();4. stream.Read를 통해 Client가 전달한 메시지를 buffer에 담는다
4-1 nbytes가 0보다 커지면 전달한 메시지가 있다는 뜻 이므로 반복문을 실행 시킨다
int nbytes; // 읽어온 바이트를 저장되는 변수 // stream.Read(저장할 배열 변수, // 저장을 시작할 배열의 자릿수, // 저장소의 크기 선정) // 읽은 바이트의 수를 반환 // 메시지를 받아서 출력하는 코드 while ((nbytes=stream.Read(buff, 0, buff.Length))>0) { Listenmsg = Encoding.UTF8.GetString(buff, 0 , nbytes); Console.WriteLine(Listenmsg); }5. Client가 exit를 보내면 통신을 종료하고 stream과 tcpClient를 닫는다
if (Listenmsg == "exit") break; // 닫지 않으면 프로그램이 꺼지지 않고 계속 켜진 상태가 된다 stream.Close(); tcpClient.Close();* 풀 코드
static void Main(string[] args) { // IP 4바이트 주소를 직접 숫자로 적어서 사용 IPAddress ip2 = new IPAddress(new byte[] { 0, 0, 0, 0 }); // 문자를 ip 주소로 변환 IPAddress ip1 = IPAddress.Parse("0.0.0.0"); int port = 9876; // Listener 생성 // IP, Port 번호가 필요하다 TcpListener listener = new TcpListener(ip1, port); listener.Start(); byte[] buff = new byte[1024]; string Listenmsg = ""; while (true) { // 클라이언트 통신요청 받는 TcpClient 생성 TcpClient tcpClient = listener.AcceptTcpClient(); // 클라이언트와 정보를 주고 받을 stream 생성 // NetworkStream 객체 저장 NetworkStream stream = tcpClient.GetStream(); int nbytes; // 읽어온 바이트를 저장되는 변수 // stream.Read(저장할 배열 변수, // 저장을 시작할 배열의 자릿수, // 저장소의 크기 선정) // 읽은 바이트의 수를 반환 // 메시지를 받아서 출력하는 코드 while ((nbytes=stream.Read(buff, 0, buff.Length))>0) { Listenmsg = Encoding.UTF8.GetString(buff, 0 , nbytes); Console.WriteLine(Listenmsg); } if (Listenmsg == "exit") break; // 닫지 않으면 프로그램이 꺼지지 않고 계속 켜진 상태가 된다 stream.Close(); tcpClient.Close(); } }'스마트팩토리 개발자 교육(23.05.08 ~ 23.10.27)7 > 네트워크 기초이론' 카테고리의 다른 글
C# ECHO 채팅서버 - 서버가 메시지 보내기 (0) 2023.05.18 C# - ECHO 채팅 서버 - 클라이언트 코드 (0) 2023.05.18 NAT, 포트 포워딩, DNS (0) 2023.05.11 TCP (0) 2023.05.11 OSI 7 Layer - L4 (0) 2023.05.10