//Вернем имя локального хоста и IP-адрес;
InetAddress я = InetAddress.getLocalHost();
i.getHostAddress();//IP
i.getAddress();//???
//Получить информацию, связанную с компьютером, по имени компьютера;
InetAddress i = InetAddress.getByName("Ливингстон-ПК");
//Получаем информацию, связанную с хостом, через имя домена
InetAddress ibaidu = InetAddress.getByName("www.baidu.com");
URL URL = новый URL("http://localhost:8080/demo.html");
URL.getHost();
Сокет (клиент):
Когда объект установлен, вы можете подключиться к указанному хосту. Поскольку TCP ориентирован на соединение, при установке службы сокетов должен существовать сервер и соединение будет успешным. После установки соединения по каналу выполняется передача данных. ;
//Создаем службу сокетов клиента и указываем целевой хост и порт;
Socket s = новый Socket("cj-PC", 10003);
// Для отправки данных необходимо получить выходной поток в потоке сокета;
OutputStream out = s.getOutputStream();
//PrintWriter out = new PrintWriter(s.getOutputStream(),true);out.println("Hello");
out.write("привет".getBytes());
//Получаем ответное сообщение
InputStream in = s.getInputStream();
байт[] bufIn = новый байт[1024];
int num = in.read(bufIn);
System.out.println(новая строка(bufIn, 0, num));
s.close(); // Объект потока инкапсулируется в сокет и автоматически закрывает объект потока;
Серверсокет (сервер):
Установите серверную службу сокетов ServerSocket и прослушивайте порт;
Получите подключенный клиентский объект через метод принятия объекта. Если соединения нет, он будет ждать (блокируется):
Если клиент отправляет данные, сервер должен использовать поток чтения соответствующего клиентского объекта для получения данных, отправленных клиентом;
ServerSocket ss = новый ServerSocket (10003);
//ServerSocket(int port,int backlog); максимальное количество соединений;
Сокет s = ss.accept();
InputStream in = s.getInputStream();
байт[] buf = новый байт[2014];
int len = in.read(buf);
String Rec = новая строка (buf, 0, len);
System.out.println(запись);
// отправляем обратное сообщение
OutputStream out = s.getOutputStream();
out.write("получено".getBytes());
s.close();//Сервер автоматически закроет клиент;
(1)Клиент:
Установите службу сокетов и укажите хост и порт для подключения;
Получите выходной поток в потоке сокетов, запишите данные в поток и отправьте их на сервер через сеть;
Получите входной поток в потоке сокетов, получите данные, возвращенные сервером, и закройте клиентские ресурсы;
DatagramSocket: отправка фрагмента текстовых данных посредством передачи UDP;
Отправлять:
//Создаем службу udp, создаем объект DatagramSocket и указываем номер продукта;
Сокет DatagramSocket = новый DatagramSocket(8888);
// Определить данные и инкапсулировать их в пакет данных DatagramPacket (необходимо указать номер порта конечного компьютера);
byte[] buf = "udp, я иду".getBytes();
DatagramPacket dp = новый DatagramPacket(buf, buf.length,
InetAddress.getByName("Имя-машины"), 10086);
// отправлять;
сокет.send(дп);
// закрытие;
сокет.закрыть();
Получать:
//Определяем службу udpsocket. Обычно отслеживается порт, который фактически определяет цифровой идентификатор принимающего сетевого приложения;
Сокет DatagramSocket = новый DatagramSocket(10086);
while (true) { //Цель состоит в том, чтобы постоянно отслеживать
байт[] buf = новый байт[1024];
//Определяем пакет данных для хранения данных;
DatagramPacket dp = новый DatagramPacket(buf, buf.length);
// Сохраняем полученные данные в пакет данных с помощью метода приема службы;
socket.receive(dp);//Метод блокировки, застревает здесь, если нет данных;
// Получение данных методом пакета данных;
Строка ip = dp.getAddress().getHostAddress();
Строковые данные = новая строка(dp.getData(), 0, dp.getLength());
int порт = dp.getPort();
}
Socket s = новый Socket("Имя-Машины", 10005);
OutputStream out = s.getOutputStream();
FileInputStream fis = новый FileInputStream("awf.jpg");
байт[] buf = новый байт[1024];
интервал лен = 0;
while ((len = fis.read(buf)) != -1) {
out.write(buf, 0, len);
}
// Остановить отправку данных
s.shutdownOutput();
ServerSocket ss = новый метод ServerSocket(10005); //ss.accept() имеет блокирующий эффект;
// Для каждого Socket, полученного методом Accept(), можно создать отдельный поток;