首页 > 代码库 > java网络之udp
java网络之udp
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"), 10000); // 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(10000); while (true) { // 2,定义数据包。用于存储数据。 byte[] buf = new byte[1024]; DatagramPacket dp = new DatagramPacket(buf, buf.length); // 3,通过服务的receive方法将收到数据存入数据包中。 ds.receive(dp);// 阻塞式方法。 // 4,通过数据包的方法获取其中的数据。 获取发送端端口 String ip = dp.getAddress().getHostAddress(); String data = new String(dp.getData(), 0, 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"),10002); ds.send(dp); if("886".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[1024]; DatagramPacket dp = new DatagramPacket(buf,buf.length); ds.receive(dp); String ip = dp.getAddress().getHostAddress(); String data = new String(dp.getData(),0,dp.getLength()); if("886".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(10002); new Thread(new Send(sendSocket)).start(); new Thread(new Rece(receSocket)).start(); }}
java网络之udp
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。