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. tanera笔记

    use bit operation int i = ...; if ((i & 0x4) != 0) { //倒数第三位是为1 } C++的友元类和友元函数实例 - winfu - 博客园 h ...

  2. 基于maven javaweb编程缺少java源文件

    前提:基于maven的javaweb的开发环境,可参考 link 一. https://blog.csdn.net/ldlly0505/article/details/79674826 1.在sour ...

  3. springboot整合zookeeper

    在springboot中所有的整合都是以bean的形式注入对象,从数据库coon.redis conn.再到整合的zookeeper,依然是依照bean注入连接对象,通过zookeeper api对z ...

  4. jdango 使用oss存储

    安装django-aliyun-oss2-storage-0.1.5.tar.gz settings文件添加 MEDIA_ROOT = os.path.join(BASE_DIR,'upload/') ...

  5. Tengine安装(阿里baba的)-Nginx

    在先前的文章中介绍过Tengine,先前只是使用了运维人员配置好的内容,未自己进行过安装配置.周末闲来无事,对于Tengine进行了尝试性的安装.记录下面方便以后再做改进. Tengine官网上有个非 ...

  6. python狂犬病大数据分析

    一.被动物咬伤.抓伤者,年龄以45-59岁年龄组为最多(占30.66%). 45-59岁年龄段的人与动物接触较多.被侵害的机会最多.其次受伤机会较多的是15-44岁年龄阶段的人,而7岁及以下儿童受伤比 ...

  7. WM-结汇

    PI发给客户以后, 客户打过来定金之后. 把PI的 P单词去掉,改为只剩invoice, 再把PI改成一份contract为标题的文件,两份文件都是要自己和客户的签字的. 然后需要用这两份文件进行结汇 ...

  8. hdoj3709(数位dp)

    题目链接:https://vjudge.net/problem/HDU-3709 题意:求出[l,r]中的平衡数,平衡数即存在一个中心点使得两边的力矩和相等. 思路:首先需要知道一个数最多只有一个中心 ...

  9. 【Android】异步加载布局探索

    最近在做的项目页面复杂导致布局嵌套多层,而且又使用了百分比布局(可能主要是这个原因)导致页面加载的时候主线程会被阻塞, 那要想减少主线程阻塞,一来就是简化布局,减轻LayoutInflater的负担, ...

  10. cookie和session 以及Django中应用

    cookie和session 以及Django中应用   cookie和session机制 cookie和session机制 cookie机制采用的是在客户端保持状态的方案.作用就是为了解决HTTP协 ...