2012. 1. 6. 22:06
// 서버 TCP 리스너
private TcpListener _server = null;
..
.
// TcpListener로 서버 객체를 생성합니다.
_server = new TcpListener(localHostEntry.AddressList[0], _svrPort);
.
.
.
// 실제 스레드가 처리되는 메소드
.
.
.
// 실제 스레드가 처리되는 메소드
private void ServerThreadStart()
{
// 클라이언트 소켓 객체를 선언합니다.
Socket clientSocket = null;
: while 돌면서 이부분에서 대기 상태에 있다가 Client에서
(TcpClient _tcpClient = new TcpClient(_svrIP, _svrPort);)이 부분을 만나 Connect 하면서 다음
줄 명령라인으로 이동된다.
while (!_isStop)
{
try {
// 서버에 접속된 클라이언트 소켓을 받습니다.
clientSocket = _server.AcceptSocket(); //<-- 대기상태: while 돌면서 이부분에서 대기 상태에 있다가 Client에서
(TcpClient _tcpClient = new TcpClient(_svrIP, _svrPort);)이 부분을 만나 Connect 하면서 다음
줄 명령라인으로 이동된다.
==> 설명
: clientSocket = _server.AcceptSocket(); 이 곳에서 주구장창 클라이언트들을 기다린다.
접속될때마다 각각 클라이언트들은 클라이언트마다 틀린 RemoteEndPoint ( IP :PORT) 즉, 포트만 틀린 종점을 받아
서로 연결되어 수행이 이루어진다. 이때의 PORT 는 실제(컴퓨터) PORT 가 아닌 가상(SOCKET) PORT 이다.
Connection.LocalEndPoin는 자신의 IP와 Port를 표시하고,
Connection.RemoteEndPoint는 자신의 LocalEndPoint에 접속된 다른 Socket의 IP와포트를 나타냅니다.
LocalEndPoin : 컴퓨터의 IP, PORT
RemoteEndPoint : SOCKET 의 IP, PORT <-- 여러 클라이언트 구별 키.
'My Story > Network&IO' 카테고리의 다른 글
[IO] Stream 의 파생 클래스 (0) | 2012.01.06 |
---|---|
실행하는 컴퓨터의 IP를 찾아 종점을 생성 (0) | 2012.01.06 |
[Socket] Server & Client With Consol : Receive and Send (0) | 2012.01.06 |
[Socket] Server & Client using Console. (0) | 2012.01.06 |