import java.net.*;

/**
* InetAddress用法
* 获取本地主机名,ip
* 通过主机名,ip获取InetAddress对象
*/
public class Demo{
public static void main(String[] args) throws Exception {
InetAddress localHost = InetAddress.getLocalHost();
System.out.println(localHost.toString());
System.out.println(localHost.getHostAddress());
System.out.println(localHost.getHostName()); InetAddress thinkpad = InetAddress.getByName("reborn-PC");
System.out.println(thinkpad.toString());
}
}
import java.net.*;

/**
* 简单udp发送接收
*/
class UdpSend {
public static void main(String[] args) throws Exception {
// 1,创建udp服务。通过DatagramSocket对象。DatagramSocket(int port)可以绑定本地端口
DatagramSocket ds = new DatagramSocket(); // 2,确定数据,并封装成数据包。DatagramPacket(byte[] buf, int length, InetAddress
// address, int port) byte[] buf = "udp ge men lai le ".getBytes();
DatagramPacket dp = new DatagramPacket(buf, buf.length,
InetAddress.getByName("127.0.0.1"), ); // 3,通过socket服务,将已有的数据包发送出去。通过send方法。
ds.send(dp); // 4,关闭资源。 ds.close(); }
}
class UdpRece {
public static void main(String[] args) throws Exception {
// 1,创建udp socket,建立端点。
DatagramSocket ds = new DatagramSocket();
while (true) {
// 2,定义数据包。用于存储数据。
byte[] buf = new byte[];
DatagramPacket dp = new DatagramPacket(buf, buf.length); // 3,通过服务的receive方法将收到数据存入数据包中。
ds.receive(dp);// 阻塞式方法。 // 4,通过数据包的方法获取其中的数据。 获取发送端端口
String ip = dp.getAddress().getHostAddress(); String data = new String(dp.getData(), , dp.getLength()); int port = dp.getPort(); System.out.println(ip + "::" + data + "::" + port); }
// 5,关闭资源
// ds.close(); }
}
/*
udp多线程实现 编写一个聊天程序。
有收数据的部分,和发数据的部分。
这两部分需要同时执行。
那就需要用到多线程技术。
一个线程控制收,一个线程控制发。 因为收和发动作是不一致的,所以要定义两个run方法。
而且这两个方法要封装到不同的类中。 */
import java.io.*;
import java.net.*;
class Send implements Runnable
{
private DatagramSocket ds;
public Send(DatagramSocket ds)
{
this.ds = ds;
} public void run()
{
try
{
BufferedReader bufr = new BufferedReader(new InputStreamReader(System.in)); String line = null; while((line=bufr.readLine())!=null)
{ byte[] buf = line.getBytes(); DatagramPacket dp =
new DatagramPacket(buf,buf.length,InetAddress.getByName("127.0.0.1"),); ds.send(dp); if("".equals(line))
break;
}
}
catch (Exception e)
{
throw new RuntimeException("发送端失败");
}
}
} class Rece implements Runnable
{ private DatagramSocket ds;
public Rece(DatagramSocket ds)
{
this.ds = ds;
}
public void run()
{
try
{
while(true)
{
byte[] buf = new byte[];
DatagramPacket dp = new DatagramPacket(buf,buf.length); ds.receive(dp); String ip = dp.getAddress().getHostAddress(); String data = new String(dp.getData(),,dp.getLength()); if("".equals(data))
{
System.out.println(ip+"....离开聊天室");
break;
} System.out.println(ip+":"+data);
}
}
catch (Exception e)
{
throw new RuntimeException("接收端失败");
}
}
} class ChatDemo
{
public static void main(String[] args) throws Exception
{
DatagramSocket sendSocket = new DatagramSocket();
DatagramSocket receSocket = new DatagramSocket(); new Thread(new Send(sendSocket)).start();
new Thread(new Rece(receSocket)).start(); }
}

java网络之udp的更多相关文章

  1. Java网络编程UDP通信原理

    前言 继续今天我们的Java网络编程--TCP和UDP通信 一.TCP和UDP概述 传输层通常以TCP和UDP协议来控制端点与端点的通信   TCP UDP 协议名称 传输控制协议 用户数据包协议 是 ...

  2. java 网络编程 UDP TCP

    网络编程 网络编程主要用于解决计算机与计算机(手机.平板..)之间的数据传输问题. 网络编程: 不需要基于html页面就可以达到数据之间的传输. 比如: feiQ , QQ , 微信....网页编程: ...

  3. java网络编程(UDP详解)

    UDP详解 一,TCP/IP协议栈中,TCP协议和UDP协议的联系和区别? 联系: TCP和UDP是TCP/IP协议栈中传输层的两个协议,它们使用网络层功能把数据包发送到目的地,从而为应用层提供网络服 ...

  4. JAVA网络编程--UDP通信

    首先网络传输数据需了解例如以下三点 1.找到对方IP 2.数据要发送到对方指定的应用程序上,为了标识这些应用程序,所以给这些网络应用程序用数字进行了标识.为了方便称呼这个数字,叫做port,逻辑por ...

  5. Java网络编程——UDP聊天程序

    UDP简介 UDP协议的全称是用户数据报,在网络中它与TCP协议一样用于处理数据报.在OSI模型中,UDP位于第四层--传输层,处于IP协议额上一层.UDP有不提供数据报分组.组装以及不能对数据报排序 ...

  6. Java网络编程(UDP协议:接收端)

    package WebProgramingDemo; import java.io.IOException; import java.net.DatagramPacket; import java.n ...

  7. Java网络编程(UDP协议:发送端)

    package WebProgramingDemo; import java.io.IOException; import java.net.DatagramPacket; import java.n ...

  8. java网络编程UDP

    图片来自网络 [发送端] import java.io.IOException; import java.net.DatagramPacket; import java.net.DatagramSoc ...

  9. Java网络编程——UDP实例

    UDPSendDemo import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamRea ...

随机推荐

  1. 总结的git操作命令小抄集

    .gitignore 本地仓库主目录下,用于定义提交时忽略的文件   git add <file-name> 将修改或新增的文件存入暂存区   git reset HEAD <fil ...

  2. openwrt uci

    UCI: Unified Configuration Interface 通用配置接口,主要用于集中控制openwrt的配置文件. 1.uci使用的配置文件一般放置在设备上的/etc/config目录 ...

  3. Entity Framework技巧系列之三 - Tip 9 – 12

    提示9. 怎样直接删除一个对象而无需检索它 问题 最常见的删除Entity Framework中实体的方式是将你要删除的实体传入Context中并像如下这样删除: 1 // 按ID查找一个类别 2 / ...

  4. servlet第2讲(下集)----创建servlet实例(继承GenericServlet)

  5. flash/flex 编译错误汇总

    来源:http://blog.chinaunix.net/uid-366408-id-116463.html 代码 消息 说明   1000 对 %s 的引用不明确. 引用可能指向多项.例如,下面使用 ...

  6. PHP fpm优化【转】

    在优化PHP的进程数的时候我们首先要了解我们服务器执行一个php使用的内存 1: 查询一个php占用的内存方法 pmap $(pgrep php-fpm | head -1) 我这里查询到的是 000 ...

  7. MySQL主从配置【转载】

    1.主从服务器分别作以下操作:  1.1.版本一致  1.2.初始化表,并在后台启动mysql  1.3.修改root的密码 2.修改主服务器master:   #vi /etc/my.cnf     ...

  8. 二维 ST POJ 2019

    题目大意:给你一个n*n的矩阵,每次给你一个点(x,y),以其为左上角,宽度为b的矩阵中最小的数值和最大数值的差是多少?  一共k个询问. 思路:简单的二维st. 定义dp(i,j,k,L)表示以(i ...

  9. c语言的编译过程和GCC 编译参数

    原文: http://www.cnblogs.com/zhangShanGui/p/4912135.html C语言的编译过程和GCC编译参数 C语言的编译一般有三个步骤: 预编译: gcc -E - ...

  10. JS IIFE写法

    IIFE 博客分类: 前端开发   介绍IIFE IIFE的性能 使用IIFE的好处 IIFE最佳实践 jQuery优化 在Bootstrap源码(具体请看<Bootstrap源码解析>) ...