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
  • 相关阅读:
    实现将Web页面的内容,Export To Excel的功能
    设计模式点滴
    Vista上运行VisualStudio2005,调试asp.net程序的怪问题
    《天风文章》V1.0.0使用说明
    呵呵,cnblog排名进4000了,留念一下!
    一个程序只能启动一次实现
    VS中"生成注释WEB页"的问题
    用友Cell组件使用总结
    《天风文章》 V1.1.0设计文档
    SQL 数据库的自动备份(Procedures实现)
  • 原文地址:https://www.cnblogs.com/wf293/p/14710799.html
Copyright © 2011-2022 走看看