네트워크 프로그래밍 관련 공부를 하면서 간단히 정리해보았다. 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 |