2013-05-16 3 views
1

자바 네트워킹 프로그램을 만들었는데 항상 실행합니다 (항상 발생하지는 않습니다). 유령 번호가 생기면 소켓에 숫자가 나타납니다. -16956754 (항상 같은 숫자)와 같은 소켓을 사용하지만 소켓의 숫자는 내가받는 번호에 가깝지 않습니다. 내가 사용하고있는 항구에서 교통량이 증가하고 있기 때문일 수 있습니까? 저는 꽤 일반적인 포트 인 25565를 사용하고 있습니다.네트워킹 - 소켓을 사용하고 때로는 유령 번호를 가져옴

만약 그렇다면 어느 포트를 게임 응용 프로그램에 가장 적합하게 사용할 것을 권장합니까?

+0

포트 25565를 사용하는 이유는 무엇입니까? Minecraft 서버에서 사용하는 포트처럼 보입니다. 자바 프로그램은 minecraft와 관련이 있습니까? – Ramp

+0

Google에서 볼 수있는 코드 스 니펫을 게시하십시오. 일부 로그 또는 코드를 보지 않고 문제가 무엇인지 알 수는 없습니다. – Ramp

답변

1

포트를 사용하지 않는 포트로 변경하여 해결되었습니다.

+1

그건 해결책이 아니야. – rolfl

0

자신의 응용 프로그램이고 포트를 선택하려면 "꽤 일반적인 포트"가 아닌 것을 선택하십시오. 이 경우 Minecraft 서버에서 사용하는 포트처럼 보입니다.

+1

그건 정말 질문에 대한 대답이 아니야 .... – rolfl

+1

분명히 대답이다. 그것은 Minecraft 클라이언트 또는 그들이 무엇이든간에 모든 트래픽을 중지합니다. +1 – EJP

2

모든 네트워크 서버 소켓 (응용 프로그램과 같은)은 포트가있는 소켓을 열고 연결을 기다립니다. 소켓은 연결이 어디에서오고 있는지, 그리고 소켓의 클라이언트 측에서 무엇을 할 것인지 전혀 모른다. 응용 프로그램이 무엇이든 항상은 서버에 연결하는 클라이언트가 예상 한 것이 아닌 경우입니다.

프로그램에서 서버에 대한 클라이언트를 예상 클라이언트 유형으로 식별하는 프로토콜을 만들어야합니다. 클라이언트가 올바른 응용 프로그램이 아닌 경우에는 연결을 끊어야합니다. 예를 들어

는 메일 프로토콜 등 귀하의 경우에는

, HTTP는 GET은 POST가, 또는 PUT 기대하고, 클라이언트가 EHLO 또는 HELO 메시지를 보낼 것으로 예상, 당신은에 의해 사용되는 포트를 선택했을 수 있습니다 Minecraft,하지만 그건 그 포트를 사용하여 그만두는 이유가 아닙니다 당신이 당신에게 중요한 클라이언트 유형을 확인할 수 있다면.

유효한 클라이언트가되기 위해 서버를 설정하고 연결할 것을 기대하는 것은 합리적이지 않습니다.

포트를 변경하면 문제가 덜 자주 (아마) 발생하고 문제가 사라지지 않습니다.

+0

포트 사용을 중단하는 것이 좋은 이유입니다. (a) 프로그램은 Minecraft 서버가 실행중인 호스트에서 작동하지 않으며, (b) Minecraft 클라이언트를 깨뜨릴 것입니다. 실제로 이미 그렇게하고 있습니다. 이 포트는 MySQL이 사용하는 것으로도 나열됩니다. – EJP

+0

그게 전부 요점입니다. MySQL에 등록되어 있지 않습니다. https://www.iana.org/assignments/service-names-port-numbers/service-names-port-numbers.txt 누구나 ' 포트 (OP와 마찬가지로). 서비스를 프로그래밍 할 때는 방어 적으로 프로그램해야하며 모든 것이 완벽 할 것으로 기대하지 않아야합니다. 이것이 프로그램이 포트를 재구성하고, 필요하다면, 오작동하는 클라이언트를 다루는 방법을 알아야하는 이유입니다. 이미 포트를 변경하여 문제가 덜 자주 발생할 수 있다고 말했지만, 원래 문제를 무시할 수있는 것은 아닙니다. – rolfl