3. C# Sockets 서버 동작 구조

소켓 통신 실행 흐름
VS C# 콘솔 프로젝트 생성하기
Step.1 서버 준비 구현
더보기

F5 키를 누르면, 서버가 동작하는 것을 확인 할 수 있다.
using System.Net;
using System.Net.Sockets;
namespace ConsoleApp4
{
internal class Program
{
static void Main(string[] args)
{
// (1)
Socket servSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
// (2)
IPAddress ipaddr = IPAddress.Any;
IPEndPoint ipep = new IPEndPoint(ipaddr, 23000);
servSocket.Bind(ipep);
// (3)
servSocket.Listen(5);
Console.WriteLine("Server listening on: " + servSocket.LocalEndPoint?.ToString());
Console.WriteLine("Waiting for incoming connection...");
// (4)
Socket connSocket = servSocket.Accept();
}
}
}

Step.2 중단점
더보기

에디터의 커서 위치에서 F9 키는 누르면, 중단점이 찍힙니다.

F5 키를 눌러, start debugging 을 시작하면, 중단점에서 실행이 멈춥니다.

F10 키를 누르면 한줄씩 실행할 수 있습니다.

F10 키를 누르면 한줄씩 실행할 수 있습니다.

Continue 버튼을 누르면 중단점을 무시하고 실행됩니다.

중단점이 무시되고, 전부 실행되었습니다.






Step.3 telnet 연결 테스트
더보기

Win+R 단축키로 '실행' 창에 optionalfeatures 입력하고, 'telnet client'를 체크하여 활성화합니다.





Step.4 서버에 문자 하나 보내기 테스트
더보기

서버에, 클라이언트 연결 후 문자하나를 입력받는 코드를 추가합니다.



// + 추가
Console.WriteLine("Client connected. " + connSocket.ToString() + " - IP End Point: " + connSocket.RemoteEndPoint?.ToString());
// (5)
byte[] buff = new byte[128];
int numberOfReceivedBytes = 0;
numberOfReceivedBytes = connSocket.Receive(buff);
Console.WriteLine("Number of received bytes: " + numberOfReceivedBytes);
Console.WriteLine("Data sent by client is: " + buff);
string receivedText = Encoding.ASCII.GetString(buff, 0, numberOfReceivedBytes);
Console.WriteLine("Data sent by client is: " + receivedText);




Step.5 에코 서버 테스트
더보기





while (true)
{
// (5)
numberOfReceivedBytes = connSocket.Receive(buff);
Console.WriteLine("Number of received bytes: " + numberOfReceivedBytes);
Console.WriteLine("Data sent by client is: " + buff);
string receivedText = Encoding.ASCII.GetString(buff, 0, numberOfReceivedBytes);
Console.WriteLine("Data sent by client is: " + receivedText);
// (6)
connSocket.Send(buff);
if (receivedText == "x")
{
break;
}
Array.Clear(buff, 0, buff.Length);
numberOfReceivedBytes = 0;
}





Step.6 모바일 telnet 앱에서 에코 서버 테스트
더보기

firewall.cpl 실행하여, 윈도우 방화벽 설정창에서 고급 설정을 실행한다.

나머지 설정은, 기본값으로 진행하면 된다. Outbound Rules 역시 동일하게 만들어준다.

모바일에서 telnet 앱으로 검색하고, IP, Port 입력한다.

터미널에서 입력하던 방법과 동일한 결과를 보여준다.
방화벽 해제




