나는 체커 게임을 안드로이드 플랫폼 화합으로 만들고 있습니다. 이 게임 멀티 플레이어를 만들고 TCP/IP 네트워크를 C# 언어로 구현하는 작업이 주어졌으며 서버 측에서 Golang을 사용해야합니다. 나는 거의 게임 자체를 마쳤지 만, 서버와 tcp에 대해서는 아무것도 몰라. 내 게임을 위해 그것을 구현하는 방법. 그 방법을 보여주기 위해 자습서를 시작할 수있는 방법이 있습니까? 조언이 도움이 될 것입니다! 미리 감사드립니다.C#에서 Tcp/ip 네트워크를 쓰는 방법과 Golang의 서버로 화합 멀티 플레이 체커 게임
답변
자, 이제 앱의 서버 - 클라이언트 통신을 구축하려고합니다. 커뮤니케이션에 관해 이야기 할 때 항상 나타나는 키워드는 socket입니다. 간단히 말해 소켓은 동일하거나 다른 시스템에서 서로 다른 두 프로세스 간의 통신을 허용합니다. 여러 유형의 소켓이 있는데, 그 중 일부는 here과 here 사이의 차이점을 확인할 수 있습니다.
는 통신 채널을 설정하려면, 클라이언트 측에서 필요한 단계는 다음과 같습니다- 이 소켓() 시스템 호출을 통해 소켓을 작성합니다.
- connect() 시스템 호출을 사용하여 서버 주소에 소켓을 연결하십시오.
- () 및 쓰기()을 통해 데이터를 보내고받습니다.
그리고 서버 측은 다음과 같습니다
- 이 소켓() 시스템 호출을 통해 소켓을 작성합니다.
- bind() 시스템 호출을 사용하여 주소 (예 : ip : port)에 소켓을 바인딩합니다.
- listen() 시스템 호출로 연결을 청취하십시오.
- accept() 시스템 호출로 연결을 수락합니다.
- () 및 쓰기()을 통해 데이터를 보내고받습니다.
일반적으로, 당신은 (대신 서버에 연결 각 플레이어의 새로운 소켓을 생성하는) 더 높은 성능을 달성하기 위해, 소켓 풀을 만들려는 서버 측에서.
아래 이미지를 확인하여 서버와 클라이언트 간의 상호 작용 흐름을 확인하십시오. 귀하의 경우 요청은 게임 정보가 포함 된 플레이어에서 서버로 전송되는 메시지입니다 (예 : 플레이어가 차례대로 이동 한 경우). 서버에서 플레이어로 이동하는 메시지는 ACK 일 수도 있고 더 정교한 정보 (예 : 상대가 자신의 차례에서 한 이동) 일 수도 있습니다.
지금, 데이터의 전송 : 인터넷 그냥 비트를 처리 할 수 있으며, 객체 나 구조체가 무엇인지 이해하지 않기 때문에 그들이 인터넷에 외출 또는에서 도착했을 때, 우리는 Serialize and Deserialize에 메시지가 그것.이를 쉽게 수행하려면이 프로세스를 간소화하고 다른 언어 (예 : Go 및 C#)에서 사용할 수있는 Google 삼촌이 제작 한 도구 Protocol Buffers을 사용할 수 있습니다.
Go 및 C#에서 서버 - 클라이언트 응용 프로그램을 빌드하는 방법에 대해 아래에서 몇 가지 예를 들어 보겠습니다. 그런 다음 프로젝트에 필요한 않는 부분을 선택할 수 있습니다
가 도움이 희망!
도움을 주셔서 감사하며 귀중한 시간을 공유해 주셔서 감사합니다. – Sherzod
너무 광범위합니다. 그래서 일반적인 조언이 아닌 특정 문제에 대한 구체적인 질문에 답하는 것입니다. 온라인에서 많은 자습서가 있습니다. – hnefatl
당신의 키워드는'MMORPG'이어야합니다,'Redis + Tornado'에 의해 작성된'websocket'에 간단한 MMORPG 서버 기반을 작성했습니다. 하지만 파이썬의 기본적인 내용을 알아야합니다. 다음은 rep https : // github.com/land-pack/aking입니다. –
이것은 Golang에 쓰여진 서버와 C#의 TCP/IP 네트워크입니다. 나는 화합으로 게임을 만들었고, 네트워크 물건을 어떻게 구현해야하는지 알고 싶습니까? – Sherzod