2016-11-15 1 views
0

Tcplistener를 사용하여 포트에서 요청을 수신 대기 중입니다. 클라이언트에서 요청이 들어 오면 요청을하는 클라이언트 IP를 알고 싶습니다. 문제는 다음과 같습니다. 서버와 모든 클라이언트가 동일한 IP를 사용합니다.어떻게 포트를 사용하여 서버에서 클라이언트로 메시지를 보낼 수 있습니까?

그래서 포트를 통해 서버에서 클라이언트로 마사지를 보내기로 결정했습니다. Google에서 많은 검색을 수행하지만 메시지를 보내는 방법을 알지 못했습니다. 포트를 사용하는 클라이언트에서 서버로? 그래서 어떤 몸도 나를 도와 줄 수 있니? 서버의 유일한 방법은 클라이언트에 메시지를 보낼 수 있도록

답변

0

클라이언트가, 들어오는 연결을 수신하지 않는 것은 그 이전에 클라이언트에 의해 설립되었으며, 기존 연결을 사용하는 것입니다.

가 당신은 기존 연결에 메시지를 보내는 포트 번호를 지정할 필요가 없습니다

, 서버가 바로 사용할 수 있습니다

Socket handlerSocket = tcpListener.AcceptSocket(); 
// a connection is now established, "handlerSocket" can be used for both receiving and sending messages 
handlerSocket.Send(...); 

당신의 클라이언트가 현재 데이터를 즉시 전송하고 있지만 연결을 닫습니다, 당신이 ' 아무것도받지 못하도록 NetworkStream에서 데이터를 읽도록 수정해야합니다.

사용할 수있는 튜토리얼이 많습니다. 나는 당신이 잘못된 키워드를 봤다고 생각합니다. c# chat tutorial과 같은 것을 시도해 보셨습니까?

+0

감사합니다. 고맙습니다. 해결책을 시도해 보겠습니다. @ C.Evenhuis – kernal

0

모두 같은 컴퓨터에서 실행하고 있습니다. 그것이 IP가 항상 같은 이유입니다.

SOP는 제어 포트와 데이터 포트라는 두 개의 포트를 가지고 있습니다. 이 작품

방법은 다음과 같습니다

  • 제어 포트는 연결을 시작하는 데 사용됩니다.
  • 연결에 성공하면 서버와 클라이언트는 데이터 (로컬 서버 데이터 포트 및 원격 클라이언트 데이터 포트)에 사용될 포트 세트를 협상합니다.
  • 서버는 로컬 서버 데이터 포트에서 원격 클라이언트 데이터 포트에 대한 연결을 설정합니다.
  • 클라이언트가 제어 포트를 통해 데이터 요청 (예 : 명령)을 실행합니다.
  • 서버가 데이터 포트를 통해 정보를 다시 보냅니다.
+0

FTP는 제어 포트가 대용량 파일 전송 중에 차지되지 않도록하기 위해 FTP를 사용합니다. 그러나 제어 포트에서도 데이터는 두 가지 방법으로 흐릅니다. 간단한 통신의 경우, 같은 컴퓨터에 있는지 여부에 관계없이 대화를하려면 두 개의 활성 연결이 필요하지 않습니다. –

+1

@ C.Evenhuis 스냅 샷을 보면 파일 전송을 시도하고 있음을 알 수 있습니다. – JuanR

+0

거기에 요점이 있습니다, 양방향 통신 _ 파일 전송이 필요한 경우 솔루션에서 문제를 해결할 수 있습니다. –

관련 문제