UDP를 사용하여 내 자신의 '신뢰할 수있는 전송 프로토콜'을 만들고 java로 작성해야합니다. 그러나 더 조직화 된 구현을하기에는 너무 어렵지 않다. 확장을 통해 DatagramPacket 클래스의 자체 버전을 만들고, 원격 호스트로부터 수신 할 때 읽을 바이트 헤더를 추가하고,이 새로운 유형의 패킷을 전달하기를 바랬다. 타입 변환을 통해 정규 DatagramSocket을 통해, 또는 더 많은 메소드를 구현하기 위해 DatagramSocket 클래스를 확장 할 수도 있습니다. DatagramPacket 클래스가 최종적인 것으로 밝혀졌고, 너무 완고하게 내 생각을 포기합니다. 이러한 사용자 정의 패킷 유형을 전송할 수있는 방법을 알고있는 사람이 누구입니까? 미리 감사드립니다!자바에서 UDP 프로그래밍
2
A
답변
2
대체 동작을 제공하기 위해 서브 클래스를 지정하는 것도 한 가지 방법이지만, 사용자가 알아 차린 것처럼 항상 실현 가능한 것은 아닙니다. 어떻게 든 composition rather than inheritance을 기반으로 한 해결책을 생각해 낼 수 있습니까?
have-a
DatagramPacket
을 멤버 변수로 사용하여 작동하도록 할 수 있는지 확인하고 DatagramPacket
주위에 클래스의 메서드를 래핑하여 동작을 향상시킵니다.
DatagramPackets을 끝까지 보내고 싶지만 DatagramSocket이 이미 수행하고있는 것 이외에도 특별한 처리가 필요합니다. 여기에 떠오르는 디자인이야 (나는 많은 사람들이 확신 해요) :
class JayPacket {
private byte[] payload; // Payload without any flow control bytes
// Other flow control magic
public DatagramPacket asDatagramPacket() {
// Package this instance's payload plus your flow control bytes
// into a DatagramPacket
}
public static JayPacket fromDatagramPacket(DatagramPacket datagramPacket) {
// Parse the control bytes out of the given DatagramPacket
// and construct a JayPacket
}
}
그런 다음 다른 클래스 주위
DatagramSocket
이
JayPacket <--> DatagramPacket
변환을 관리하기 위해 포장한다.
관련 문제
- 1. 소켓 프로그래밍 UDP GetSocketOpt
- 2. UDP 소켓 프로그래밍 도움말
- 3. C : UDP 소켓 프로그래밍
- 4. MultiThreaded Udp 소켓 프로그래밍
- 5. 자바에서 UDP 패킷의 TTL을 얻는 방법은 무엇입니까?
- 6. 자바에서 서버 측 프로그래밍
- 7. 일반 소켓 UDP 프로그래밍 질문
- 8. 자바에서 프로그래밍 방식으로 소프트웨어를 제거하십시오.
- 9. Java : 멀티 스레딩 및 UDP 소켓 프로그래밍
- 10. udp6의 CLOSE 프로그래밍 안드로이드 UDP 서버
- 11. UDP 클라이언트 용 Windows C 소켓 프로그래밍
- 12. dot net 프로그래밍 udp buffersize 오류
- 13. 자바에서 보내는 UDP 및 패킷 IP 주소 변경하기
- 14. UDP (
- 15. 신뢰할 수있는 UDP
- 16. 비 차단 udp 소켓 프로그래밍 C : 무엇을 얻을 수 있습니까?
- 17. 프로그래밍 방식으로 완전한 TCP 또는 UDP 팩 보내기
- 18. 프로그래밍 실습 : UDP 데이터 그램의 패킷 크기를 선택하는 방법은 무엇입니까?
- 19. 프로그래밍 방식으로 UDP/IP 브로드 캐스트를 사용하려면 어떻게해야합니까?
- 20. UDP 서버 벤치마킹
- 21. udp 서버는 udp 클라이언트로부터받은 요청에 따라 응답합니다.
- 22. android에서 시스템 udp 서버로부터 udp 데이터를 받습니까?
- 23. UDP Azure Media Services에 UDP 파일 업로드
- 24. UDP 코드 문제 해결
- 25. 자바에서 * =?
- 26. 자바에서
- 27. UDP 데이터 그램 소켓 + 자바 체크섬
- 28. UDP 패킷 수신되지 않음
- 29. 자바에서 mysql 데이터베이스 업데이트
- 30. 클라이언트/서버 애플리케이션의 UDP
나는 이것이 처음에는 효과가있을 것이라고 생각했지만, 그렇게 생각하지는 않습니다. DatagramSocket 클래스의 'send'메서드는 DatagramPacket을 매개 변수로 사용합니다. 페이로드에 문자를 포함시키고 영수증에 따라 데이터를 구문 분석하는 것이 더 쉬울 수도 있다고 생각하기 시작했습니다. 모든 장단점이 마음에 들었습니까? –
필자는 디자인에 선을 따라 예제를 추가했다. – oksayt
아, 무슨 뜻인지 알 겠어. 나는 그것이 어느 쪽이든을하는 일의 동일한 총계일지도 모른다 생각한다. 나는 그걸 가지고 놀 것이다. 고마워요! –