zoukankan      html  css  js  c++  java
  • UDP多线程实现发送和接收消息在同一个界面。

    package UDP;

    import java.net.DatagramPacket;
    import java.net.DatagramSocket;
    import java.net.InetAddress;
    import java.util.Scanner;

    public class Demo03 {
    public static void main(String[] args) {
    new Receive().start();
    new Send().start();
    }
    }

    class Receive extends Thread {
    public void run() {
    try {
    // 创建socket相当于创建码头,指定端口号
    DatagramSocket socket1 = new DatagramSocket(6666);
    // 创建Packet相当于集装箱
    DatagramPacket packet1 = new DatagramPacket(new byte[1024], 1024);
    while (true) {

    // 接收数据:接货
    socket1.receive(packet1);
    // 获取数据(获取到所有的字节个数)
    byte[] arr = packet1.getData();
    int len = packet1.getLength();// 获取有效的字节个数
    String ip = packet1.getAddress().getHostAddress();// 获取ip地址
    int port = packet1.getPort();// 获取端口号
    System.out.println(ip + ":" + port + ":" + new String(arr, 0, len));
    }
    } catch (Exception e) {
    e.printStackTrace();
    }
    }
    }

    class Send extends Thread {
    public void run() {
    Scanner sc = new Scanner(System.in);
    // 创建码头
    DatagramSocket socket;
    try {
    socket = new DatagramSocket();
    while (true) {
    // 获取到键盘录入的数据
    String line = sc.nextLine();
    // 判断啥时候退出
    if ("quit".equals(line)) {
    break;
    }
    // 创建集装箱
    DatagramPacket packet = new DatagramPacket(line.getBytes(), line.getBytes().length,
    InetAddress.getByName("127.0.0.1"), 6666);
    // 将数据发出去:发货
    // 发货,将数据发送出去
    socket.send(packet);
    // 关闭码头
    // socket.close();
    }
    } catch (Exception e) {
    e.printStackTrace();
    }

    }
    }

     

    添加微信进交流群: opiopi293
  • 相关阅读:
    『转载』Git管理工具sourcetree安装与使用
    实用网站分享:全栈开发可能需要用到的网站
    低版本浏览器(IE6+)页面兼容性问题相关处理
    Git常用命令说明
    jquery的全局函数 多库并存
    深浅拷贝
    localStorage
    jquery中封装了三种ajax请求方式
    jquery的树状菜单
    自定义动画 jquery的结束动画
  • 原文地址:https://www.cnblogs.com/wf293/p/14710799.html
Copyright © 2011-2022 走看看