2017-12-12 17 views
1

나는 다소 TcpClient 클래스와 혼동을 느낍니다. 내 서버에 연결하고 2 개의 스트림을 원합니다. 하나의 SSL과 하나의 일반 비보안 TCP.다른 포트의 TcpClient에 여러 스트림이 있습니까?

그래서 나는이 현재처럼 연결 :

await _tcpClient.ConnectAsync(address,port); 
IsConnected = true; 
_networkStream = _tcpClient.GetStream(); 
_sslStream = new SslStream(_tcpClient.GetStream()); 

문제는 내가 다른 포트에 사용하려는 내 SSL 데이터입니다. 그래서 두 개의 TcpClient 인스턴스를 하나는 보안 용으로, 하나는 비보안 용으로 만들 필요가 있습니까? 아니면이 클래스와 다른 포트에 여러 개의 스트림을 가질 수 있습니다. 그 일을 어떻게 혼란 스럽습니까? 나는 이것이 어떻게 제대로 설정 될 수 있는지 혼란 스럽다.

+0

동일한 서버로 이동할 경우 두 개의 다른 포트 번호로 TcpClient 개체를 만들어야합니다. 두 클라이언트간에 동기화가 있습니까? 일반적으로 SSL을 사용하면 명령 용 포트와 데이터 전송 용 포트가 있습니다. 코드의 양을 줄이기 위해 Tcp 코드에 대한 클래스를 만들고이 클래스의 두 인스턴스를 만듭니다. – jdweng

+0

그래, 내가 생각하는 두 개의 TCP 클라이언트가있는 클래스를 생성 할 것이다. :) – WDUK

답변

0

예. 두 개의 개별 Socket 인스턴스가 필요합니다. TcpClient의 두 인스턴스를 통해이 될 수 있습니다. 개인적으로 원시 소켓을 선호하는 경향이 있지만 그게 당신에게 달려 있습니다.

+0

'TcpClient'와'Socket' 인스턴스 사용의 차이점은 무엇입니까? – WDUK

+0

이론적으로'TcpClient'는 소켓 작업을보다 쉽게 ​​할 수 있도록 많은 것들을 감쌀 수 있도록 도와줍니다. 그러나 API는 매우 얇은 추상화로, 대부분의 경우 원시 소켓이나 최악의 경우 'NetworkStream'처럼 쉽게 작업 할 수 있습니다. –

+0

아하, 나는 소켓의 구문 사용법을 더 잘 이해할 때까지 지금은 두 개의 TcpClient를 사용할 것이라고 생각한다. 전체 시작/콜백 설정 대 TcpClient의 비동기는 나에게 조금 혼란 스러울 것 같습니다. – WDUK