2012-03-23 2 views
0

일부 클라이언트 소프트웨어의 동작을 테스트 중이며 라우터와 비슷한 기능을 에뮬레이트하는 소프트웨어를 작성해야합니다. UDP 소켓과 같은 간단한 것을 사용하는 것이 더 바람직합니다. 패킷을 받고, 살아있는 시간을 변경하고, 다시 보내면됩니다. 정규 Java에서 가능합니까? 아니면 뭔가를 할 다음을 수행하십시오 Java의 IP 헤더

  1. 는 각 UDP 패킷이, '그 소켓에 살고 설정 시간을 새로운 소켓을 열고 다시 보내 (또는이 ISN받은
  2. 를 들어 소켓 A에 들어 효율적인 가능/t)를
  3. 수신기는 (일부 홉을 통과 것처럼 표시 변경된 값으로 패킷을 얻을 수 있지만, 현실에서)하지 않은

그래서 두 가지 방법이 가능하다? - 직접 받았다 패킷을 편집 (그런 다음 간단히 다시 전송), 또는 새 패킷을 구성하여 ori의 값을 복사합니다 ginal 하나를 만들고 적절한 헤더/소켓 옵션을 설정 한 후 보내십시오.

EDIT : '라우터'는 다른 라우터로 전달하는 것과 같이 전혀 복잡한 라우팅을 수행하지 않습니다 ... 단순히 수신 된 메시지의 ttl 헤더 필드를 줄이고 클라이언트에 직접 메시지를 보냅니다. .

답변

1

소켓 및 ServerSocket 클래스의 API를 참조하십시오. 다양한 프로토콜을위한 서버 구현의 대부분은 80과 같은 표준 포트에서 패킷을 받아들이고 일부 에피 머럴 포트를 사용하여 응답을 보냅니다.

+0

http://www.codeproject.com/Articles/86387/Implementing-a-Web-Server-in-Java –

+0

답장을 보내 주셔서 감사합니다. 그러나 CodeProject 기사는 간단한 웹 서버를위한 것입니다. 나는 라우터를 아주 아주 기본적인 에뮬레이션으로 만들려고하는데, 메시지를 받고 작은 변화를 만들어 보낸 사람에게 다시 보낸다. – xingyu

+0

다음은 AODV 라우팅 프로토콜을 구현 한 오픈 소스입니다. 나는 이것을 사용해 왔고 라우팅 구현에서 정말 효과적이다. 그것은 완전한 TCP/IP 프로토콜 스택 구현을 가지고 있습니다. 그것이 당신을 위해 어떻게 작동하는지 보자. http://jist.ece.cornell.edu/docs/040421-swans-aodv.pdf –