LINUX.ORG.RU

Как мне правильно отправить дейтаграмму?

 ,


0

1

И может как то улучшить код?

import java.net.*;
import java.io.*;

class J_ip {
	private static DatagramSocket ds;
	private static String request_search = 
		"M-SEARCH * HTTP/1.1\r\n" +
		"Host: 239.255.255.250:1900\r\n" +
		"Man: \"ssdp:discover\"\r\n" +
		"ST: upnp:rootdevice\r\n" +
		"MX: 3\r\n" +
		"User-Agent: upnp-ip\r\n" +
		"\r\n"
		;

	public static void main ( String args [ ] ) throws SocketException, UnknownHostException {

		byte[] ma = new byte[] { (byte)239, (byte)255, (byte)255, (byte)250 };
		InetAddress ia = InetAddress.getByAddress ( ma );
		ds = new DatagramSocket ( 12345, ia );
		
		byte[] brequest_search = request_search.getBytes ( );
		DatagramPacket p = new DatagramPacket ( brequest_search, brequest_search.length, ia, 1900 ); 
		try { 
			ds.send ( p ); 
		} catch ( IOException exp ) {
			System.out.println ( "не отправлено" );
		}
	}
}

вместо ds = new DatagramSocket ( 12345, ia ); сделал ds = new DatagramSocket ( );. Вроде бы заработало, надо проверить на входящих данных.

u0atgKIRznY5 ()
Ответ на: комментарий от anonymous

И что не так? Другое дело, что весь код в целом - это лютый говнокод 💩

И вообще на оно надо.

InetAddress ia = InetAddress.getByName("239.255.255.250");
fornlr ★★★★★ ()
Ответ на: комментарий от fornlr

Я сначала тоже так написал. Потом что-то не получалось и поменял на другой способ. Щас проверил твой совет, всё работает, спасибо.

u0atgKIRznY5 ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.