2014-09-02 2 views
0

게임을 만들려고하기 때문에 플레이어 A와 플레이어 B가 2 명인 경우를 상상해보십시오.메시지를 보내는 사람의 IP를 얻는 방법은 무엇입니까?

둘 다 이미 서버에 메시지를 보내 자신을 식별합니다. 그래서 모두 로그인했습니다.

플레이어 A는 플레이어 B를 공격하려고합니다. 서버가 플레이어 B에게 자신이 공격 당했다는 사실을 알리는 메시지를 보낼 수 있도록 플레이어의 IP 또는 무언가를 어떻게 유지할 수 있습니까? ?

나는 rabbitmq을 사용하고 있습니다.

+0

가능한 중복 (HTTP : // 유래. com/questions/25494920/get-clients-ip-address-by-configuration-in-rabbitmqs-message) – pinepain

답변

1

내가 과거에 이것을 처리 한 방법은 클라이언트 (귀하의 경우에는 플레이어)가 자신의 대기열을 갖는 것입니다. 또는 모든 플레이어에게 알리려면 주제 교환을 설정할 수 있습니다.

그는 내가 지금 가지고있는 설정입니다.

직접 거래소 : App.Server (클라이언트가 서버 소비된다 게시)
직접 Exchange가 : App.Client.UniqueIDForClient1은 (서버가 발간 전용 클라이언트 1이 소비가)
직접 거래소 : App.Client.UniqueIDForClient2 (서버 발간, 만 고객이 개 소비된다)
주제 거래소 : 응용 프로그램 (서버 발간, 모든 클라이언트는

당신은 C#을 사용하는 경우, 이것은 설치 및 주제 교환에 게시하는 방법입니다) App.Client 구독하기 :

ConnectionFactory mqFactory = new ConnectionFactory(); 
mqFactory.HostName = "localhost"; 
IConnection mqConnection = mqFactory.CreateConnection(); 
IModel mqChannel = mqConnection.CreateModel(); 

mqChannel.ExchangeDeclare("App", "topic", true); 

response = "This Message Will Go To All Topic Subscribers"; 
mqChannel.BasicPublish("App", "App.Client", null, Encoding.UTF8.GetBytes(response)); 

고객이 현재 PHP/AJAX를 사용하는 웹 앱이므로 소비자/가입자 코드를 편리하게 사용할 수 없습니다. 여기

는 가입자 측 예제를 가지고 offical 한 RabbitMQ 튜토리얼에 대한 링크입니다 : [? 그것은 rabbitmq의 메시지에 구성하여 클라이언트의 IP 주소를 얻을 수 있나요]의 https://www.rabbitmq.com/tutorials/tutorial-five-dotnet.html

+0

흠 ... 내 질문에 대답했다고 생각하지 않아. – Seva

+0

@ 세바 1 세 당신이 무엇을 요구하고 있는지 확실하지 않습니다 ... 당신은 서버가 특정 플레이어에게 메시지를 보낼 수 있기를 원하고 직속 교환기가이를 달성해야합니다. 둘 이상의 플레이어가 동일한 IP에서 올 수 있으므로 IP 주소를 통해 고유 한 ID를 사용합니다. 서버 측에서 누가 누구인지 추적하는 방법을 찾고 있다면 어떤 플레이어가 어떤 대기열에 속해 있는지 목록을 유지하십시오. 새로운 플레이어가 RabbitMQ를 통해 등록 메시지를 보내도록하거나 플레이어가 메시지를 게시 할 때 'reply_to'속성을 사용할 수 있습니다. – Tim

+0

흠 ... 나는 내가 이해했다고 생각한다. 나는 표결했다. 나는 곧 그것을 시험 할 것이다. – Seva

관련 문제