InetAddress类:

表示互联网中的IP地址,示例:

package demo;

import java.net.InetAddress;
import java.net.UnknownHostException; public class InetAddressDemo {
public static void main(String[] args) throws UnknownHostException {
function1();
function2();
} public static void function1() throws UnknownHostException {
InetAddress inet = InetAddress.getLocalHost();
System.out.println(inet.getHostName());// 获取主机名
// 输出:DESKTOP-Q3O8AEO
System.out.println(inet.getHostAddress());// 获取主机IP
// 输出:192.168.87.1
} public static void function2() throws UnknownHostException {
// 获得其他IP
InetAddress inet = InetAddress.getByName("www.baidu.com");
System.out.println(inet);
// 输出:www.baidu.com/111.13.100.92
}
}

UDP协议:无连接通信协议,最大64KB,不安全

TCP协议:面向连接通信协议,可靠安全,三次握手以确认连接,相对速度慢,适合大数据传输

UDP示例:

发送端:

package demo;

import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress; public class UDPSend {
public static void main(String[] args) {
try {
byte[] data = "你好".getBytes();
InetAddress inet = InetAddress.getByName("127.0.0.1");
DatagramPacket dp = new DatagramPacket(data, data.length, inet, 6000);
DatagramSocket ds = new DatagramSocket();
ds.send(dp);
ds.close();
} catch (IOException ex) {
System.out.println(ex);
}
}
}

接收端:

package demo;

import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket; public class UDPReceive {
public static void main(String[] args) {
try {
DatagramSocket ds = new DatagramSocket(6000);
byte[] data = new byte[1024];
DatagramPacket dp = new DatagramPacket(data, data.length);
ds.receive(dp);
int length = dp.getLength();
String ip = dp.getAddress().getHostAddress();
System.out.println(ip + ":" + new String(data, 0, length));
ds.close();
} catch (IOException ex) {
System.out.println(ex);
}
}
}

先运行接收端,再运行发送端,结果:

输出:127.0.0.1:你好

功能可以提升,实现键盘输入的聊天:

发送端:

package demo;

import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
import java.util.Scanner; public class UDPSend {
public static void main(String[] args) {
try {
Scanner sc = new Scanner(System.in);
DatagramSocket ds = new DatagramSocket();
InetAddress inet = InetAddress.getByName("127.0.0.1");
while (true) {
String message = sc.nextLine();
byte[] data = message.getBytes();
DatagramPacket dp = new DatagramPacket(data, data.length, inet, 7000);
ds.send(dp);
}
} catch (IOException ex) {
System.out.println(ex);
}
}
}

接收端:

package demo;

import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket; public class UDPReceive {
public static void main(String[] args) {
try {
DatagramSocket ds = new DatagramSocket(7000);
byte[] data = new byte[1024];
while (true) {
DatagramPacket dp = new DatagramPacket(data, data.length);
ds.receive(dp);
int length = dp.getLength();
String ip = dp.getAddress().getHostAddress();
System.out.println(ip + ":" + new String(data, 0, length));
}
} catch (IOException ex) {
System.out.println(ex);
}
}
}

先后运行,在发送端发送的消息可以随时在接收端收到,这里就实现了一个简单的聊天功能

同个局域网下的多台电脑之间也可以聊天,只要修改成相应的IP地址即可

Java学习笔记52(网络编程:UDP协议案例)的更多相关文章

  1. java学习笔记15--多线程编程基础2

    本文地址:http://www.cnblogs.com/archimedes/p/java-study-note15.html,转载请注明源地址. 线程的生命周期 1.线程的生命周期 线程从产生到消亡 ...

  2. Java精选笔记_网络编程

    网络编程 概述 现在的网络编程基本上都是基于请求/响应方式的,也就是一个设备发送请求数据给另外一个,然后接收另一个设备的反馈. 在网络编程中,发起连接程序,也就是发送第一次请求的程序,被称作客户端(C ...

  3. java学习笔记14--多线程编程基础1

    本文地址:http://www.cnblogs.com/archimedes/p/java-study-note14.html,转载请注明源地址. 多线程编程基础 多进程 一个独立程序的每一次运行称为 ...

  4. nodejs学习笔记之网络编程

    了解一下OSI七层模型   OSI层 功能 TCP/IP协议 应用层 文件传输,电子邮件,文件服务,虚拟终端  TFTP,HTTP,SNMP,FTP,SMTP,DNS,Telnet 表示层 数据格式化 ...

  5. 【原】Java学习笔记034 - 网络

    package cn.temptation; import java.net.InetAddress; public class Sample01 { public static void main( ...

  6. 7.4 (java学习笔记)网络编程之TCP

    一.TCP 1.1 TCP(Transmission Control Protocol 传输控制协议),是一种面向连接的,安全的传输协议,但效率相比于UDP而言比较低. TCP传输时需要确保先建立连接 ...

  7. 网络编程——UDP协议和通信

    第1章 UDP与TCP协议 在介绍TCP/IP结构时,提到传输层的两个重要的高级协议,分别是UDP和TCP,其中UDP是User Datagram Protocol的简称,称为用户数据报协议,TCP是 ...

  8. python学习笔记11 ----网络编程

    网络编程 网络编程需要知道的概念 网络体系结构就是使用这些用不同媒介连接起来的不同设备和网络系统在不同的应用环境下实现互操作性,并满足各种业务需求的一种粘合剂.网络体系结构解决互质性问题彩是分层方法. ...

  9. python学习笔记10 ----网络编程

    网络编程 网络编程需要知道的概念 网络体系结构就是使用这些用不同媒介连接起来的不同设备和网络系统在不同的应用环境下实现互操作性,并满足各种业务需求的一种粘合剂.网络体系结构解决互质性问题彩是分层方法. ...

随机推荐

  1. VULKAN学习资料

    1,中文开发教程:https://www.cnblogs.com/heitao/p/7193853.html

  2. Python入门:Anaconda和Pycharm的安装和配置

    Python入门:Anaconda和Pycharm的安装和配置  转自:https://www.cnblogs.com/yuxuefeng/articles/9235431.html 子曰:“工欲善其 ...

  3. 零基础爬虫----python爬取豆瓣电影top250的信息(转)

    今天利用xpath写了一个小爬虫,比较适合一些爬虫新手来学习.话不多说,开始今天的正题,我会利用一个案例来介绍下xpath如何对网页进行解析的,以及如何对信息进行提取的. python环境:pytho ...

  4. 1、detail页面 /items/detail/:id

    <template> <div class="item_detail"> <van-swipe :autoplay="3000" ...

  5. office 安装

    在 gaobo百度云下载安装包. 自定义安装,并在自定义界面选择安装路径. 破解:

  6. Setting up Scatter for Web Applications

    [Setting up Scatter for Web Applications] If you are still using scatter-js please move over to scat ...

  7. windows下webstorm调试react native

    安装请参考:http://www.cnblogs.com/wjx0912/p/5662457.html webstorm在2016.10.20的版本才正式增加react native的调试支持,所以w ...

  8. 微信H5开发

    1,line-height  不垂直居中 解决方法:用padding写高度 2,手指滑动事件    touchmove 3,页面滚动事件:touchmove 4,要写不同手机适配的基数font-siz ...

  9. tornado框架学习及借用有道翻译api做自动翻译页面

    趁着这几天有时间,就简单的学了一下tornado框架,简单做了个自动翻译的页面 仅为自己学习参考,不作其他用途 文件夹目录结构如下: . ├── server.py ├── static │   └─ ...

  10. 九校联考_24OI——餐馆restaurant

    凉心模拟D1T1--最简单的一道题 TAT 餐馆(restaurant) 题目背景 铜企鹅是企鹅餐馆的老板,他正在计划如何使得自己本年度收益增加. 题目描述 共有n 种食材,一份食材i 需要花ti 小 ...