UDP 패킷을 보내고 UDP 서버에서 응답을 다시 받아야합니다. UDP는 Java의 java.net.DatagramPacket과 비슷하지만 DatagramPacket에 대한 설명서는 패킷을 보내지 만 아무것도 반환하지 않는 것으로 보입니다. 사용하는 데 올바른지 또는 Java를 사용해야합니까? net.SocketUDP 패킷을 보내고 Java에서 응답을 수신해야합니다.
답변
예 :
import java.io.*;
import java.net.*;
class UDPClient
{
public static void main(String args[]) throws Exception
{
BufferedReader inFromUser =
new BufferedReader(new InputStreamReader(System.in));
DatagramSocket clientSocket = new DatagramSocket();
InetAddress IPAddress = InetAddress.getByName("localhost");
byte[] sendData = new byte[1024];
byte[] receiveData = new byte[1024];
String sentence = inFromUser.readLine();
sendData = sentence.getBytes();
DatagramPacket sendPacket = new DatagramPacket(sendData, sendData.length, IPAddress, 9876);
clientSocket.send(sendPacket);
DatagramPacket receivePacket = new DatagramPacket(receiveData, receiveData.length);
clientSocket.receive(receivePacket);
String modifiedSentence = new String(receivePacket.getData());
System.out.println("FROM SERVER:" + modifiedSentence);
clientSocket.close();
}
}
이것은 좋아 보인다,하지만 그 중 하나는 서버에 대해 정의 된 패킷 길이가 될 것, 즉 내가 서버에 의해 반환 된 패킷의 패킷 길이가 항상 같아 보이지 않는 것처럼 보입니다. 그래서 나는 단지 receiveData 버퍼는 가능한 가장 큰 패킷 크기를 처리 할만큼 충분히 큽니다. –
예. UDP는 신뢰할 수없는 프로토콜이며, 대량의 데이터를 전송하는 데 거의 사용되지 않습니다. 그러나, 패킷이 수신 된 후에,'DatagramPacket.getLength()'에서 포함 된 실제 바이트 수를 읽을 수 있습니다. – bezmax
'receivePacket.getData()'에는 수신 된 데이터 만 포함되어 있지 않습니다. 여기에는 버퍼의 사용되지 않은 부분도 포함됩니다. 수신 된 데이터로 문자열을 얻으려면'new String (receivePacket.getData(), 0, receivePacket.getLength(), StandardCharsets.UTF_8)'을 사용하고 charset을 원하는 것으로 조정하십시오. –
DatagramPacket과 DatagramSocket을 사용해야합니다. 패킷을 보낼 때 패킷 만 보내면됩니다. 당신이 패킷을받을 때 당신은
http://docs.oracle.com/javase/7/docs/api/java/net/DatagramSocket.html
소켓은 TCP 연결만을위한 것입니다 (예를 들어, 서버가 응답) 다른 프로그램에서 전송 된 패킷을 얻을 수 있습니다. UDP 데이터 그램을 보내고 (source)를 수신
자바 문서는 클라이언트와 서버를 작성하는 방법을 포함 않습니다.
http://docs.oracle.com/javase/tutorial/networking/datagrams/clientServer.html
당신은 정확하게 UDP와 TCP 소켓의 차이입니다 DatagramSocket#receive
보고 싶다.
UDP가 브로드 캐스트되는 반면 java.net.Socket이있는 TCP는 지점 간입니다. UDP는 JMS Topic에 메시지를 게시하는 것과 비슷하게 화재와 잊지입니다.
참조 : http://docs.oracle.com/javase/tutorial/networking/datagrams/index.html
UDP가 브로드 캐스트되지 않습니다. 방송은 IP 수준의 것입니다. – OrangeDog
- 1. UDP 패킷을 보내고 C의 라우터에서 ICMP 응답을받습니다.
- 2. Android에서 UDP 패킷을 수신합니다.
- 3. OS가 UDP 패킷을 버퍼링합니까?
- 4. UDP 요청을 255.255.255.255로 보내고 iOS에서 응답을 기다리는 중
- 5. 신호가없는 UDP 패킷을 확인 하시겠습니까?
- 6. Erlang : UDP 패킷을 만드는 방법
- 7. 안드로이드 플랫폼에서 UDP 패킷을 보냅니다.
- 8. C에서 가변 길이의 UDP 패킷을 읽는 법
- 9. C# 네트워크를 통해 요청을 보내고 응답을 기다리고 있습니까?
- 10. UDP 클라이언트가 서버로 데이터를 보내고 있지만 응답을받지 못했습니다.
- 11. OS에서 패킷을 보내고 받기 전에 패킷을 분석/차단하는 방법은 무엇입니까?
- 12. CakePhp가 Json으로 응답을 보내고 표시합니다.
- 13. 양식 Windows 전화를 받고 패킷을 보내고 싶어
- 14. Java에서 udp 소켓 프로그래밍에 대한 도움이 필요합니다.
- 15. iphone 문제가 UDP 패킷을 받고 있습니다.
- 16. 웹 RTC가있는 UDP 패킷을 보내는 방법 - Javascript?
- 17. Google 토크는 udp 또는 tcp 패킷을 사용합니까?
- 18. 페이로드가없는 UDP 패킷을 보내는 이유는 무엇입니까?
- 19. Python에서 잘못된 체크섬을 사용하여 UDP 패킷을 수신합니다.
- 20. C# UDP 패킷을 분할하는 방법은 무엇입니까?
- 21. C++은 동일한 포트에서 UDP 패킷을 수신합니다.
- 22. UDP 패킷을 찾는 방법 지연 시간
- 23. 수신 버퍼에 UDP 패킷을 다시 넣는 방법
- 24. 분할 할 수있는 UDP 패킷을 만듭니다.
- 25. UDP 패킷을 생성하는 가장 빠른 방법
- 26. IPTables 특정 UDP 패킷을 어떻게 차단합니까?
- 27. 간단한 UDP 패킷을 구문 분석하는 방법?
- 28. Wireshark는 UDP 패킷을 보지만 내 응용 프로그램은
- 29. Linux의 특정 인터페이스에서 UDP 패킷을 보내려면 어떻게합니까?
- 30. QNX RTOS를 사용하여 UDP 패킷을 실시간 수신
UDP는 데이터 그램입니다. 수신기가 무언가를 돌려 보내지 않으면 아무 것도 얻을 수 없습니다. 그것은 tcp 소켓과 동일합니다. 니가 원하는 걸 말하면 어쩌면? – Erik
Ok 서버가 이미 존재하지만 (쓰여지지 않음) 패킷을 보낼 때 다시 보내야하지만 다시 보내는 패킷은 어떻게 받습니까? –
첫 번째 질문은 : 서버가 udp를 다시 보냅니 까? 그렇다면 Datagram.receive() 메소드를 통해 자신의 UDP 소켓을 읽어야합니다. – Erik