네트워크 프로그래밍 관련 공부를 하면서 간단히 정리해보았다. TCP

 

ServerCore(서버) /  Client(클라이언트) 두 개의 스크립트를 작성한다.

 

ServerCore

string host = Dns.GetHostName();
IPHostEntry ipHost = Dns.GetHostEntry(host);
IPAddress ipAddr = ipHost.AddressList[0];
IPEndPoint endPoint = new IPEndPoint(ipAddr, 7777);

host : ip주소가 아닌 도메인주소로 사용하도록 한다. 

AddressList : IP주소 리턴

IPEndPoint : IP주소와 포트번호를 통해 생성

 

Listener.class

매개변수 OnAcceptHandler : Accept이 성공했을 때 불리는 콜백

_listenSocket.Bind(endPoint); : 넘겨 받아온 IPEndPoint의 바인드 처리

_listenSocket.Listen(10); : Listen 시작 클라이언트의 연결 요청을 대기상태

SocketAsyncEventArgs : 비동기 소켓의 관련한 패턴을 사용할 때? 쓰임

args.Completed += new EventHandler<SocketAsyncEventArgs>(OnAcceptCompleted); : 작업이 완료되면 OnAcceptCompleted을 호출

RegisterAccept(args); : 최조 한번 등록

 

args.AcceptSocket = null; : 전에 사용했던 args이기 때문에 null 초기화 작업

bool pending = _listenSocket.AcceptAsync(args); : 완료되면 false를 리턴

즉시 완료되면 OnAcceptCompleted 실행

 

_OnAcceptHandler.Invoke(args.AcceptSocket); : 연결 성공시 송수신 처리

RegisterAccept(args); : 다시 Accept 처리.

 

Init()에서 최초 Accept 처리 -> Accept 성공 완료 콜백 OnAcceptCompleted 에서 Accept 처리 -> Accept처리 ...

로 계속 반복해서 Accept을 시도한다.


 

인프런 유니티로 만드는 MMORPG 게임 개발 시리즈를 학습 예제

반응형

'STUDY > 네트워크' 카테고리의 다른 글

[네트워크] 멀티스레드 #1  (0) 2021.09.23
네트워크) TPC/IP 프로토콜  (0) 2019.11.17
네트워크) 네트워크 구성  (0) 2019.11.13

+ Recent posts