2012-06-08 4 views
1

나와 친구가 만들고있는 XNA 게임용 Tcp 서버를 프로그래밍 중이며 NetworkStream을 사용하여 서버에 연결된 특정 클라이언트로 보내는 방법이 궁금합니다. 예를 들어, 호스트의 플레이어 위치를 가져 와서 다른 연결된 클라이언트에게 보낼 위치로 보낼 수 있습니다.네트워크 스트림 및 다중 연결

+0

나는 TcpClient와 NetworkStream만이 .Write()를 가지고있는 것으로 설명했다. 처음 소켓 서버를 배웠고 .SendTo()를 사용하여이 작업을 수행 할 수있었습니다. 그러나 NetworkStream을 사용하여 어떻게해야할지 모르겠습니다. – tcoy

+0

서버에는 각 클라이언트마다 하나씩 여러 개의 NetworkStream이 있어야합니다. 클라이언트 수가 고정되어 있지 않다면 필요에 따라 서버를 할당하고 할당을 해제하도록 코드를 작성해야합니다. – ekolis

+0

@ekolis 게시 이후 오랜 시간이 걸렸으나 고객 할당 및 할당 해제에 어떤 전략을 사용하겠습니까? – Adsy2010

답변

2

당신은 몇 가지에 읽어해야합니다

이것은 가야 당신은 시작 :

  1. TcpListener
  2. TcpClient

귀하의 서버가 TcpListener가 필요합니다 . 여러 클라이언트를 지원하려면 클라이언트 목록을 작성하십시오. 연결된 모든 클라이언트에 대해 하나의 TcpClient이 표시됩니다. 각 클라이언트에서 NetworkStream의 데이터를 읽습니다. 그 중 하나에 대한 데이터를 받으면 다른 사람에게 보내십시오.

클라이언트의 메시지가 언제 끝나고 미리 보낼 수 있는지 알 수 있도록 일종의 프로토콜을 정의해야합니다.

+0

자신 만의 프로토콜을 정의 할 수 있습니다. 그러나 WCF와 같은 기존 프로토콜을 사용하거나 JSON-RPC와 같은 다른 옵션을 사용할 수도 있습니다. – svick