A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

  1. /**
  2. * @author 不安份的程序猿
  3. *
  4. */
  5. //UDP协议实现 输出数据
  6. public class DemoGet {
  7.         public static void main(String[] args) throws Exception {
  8.                 final DatagramSocket get = new DatagramSocket(9999); // 创建接口
  9.                 final boolean t = true;
  10.                 new Thread(new Runnable() {

  11.                         @Override
  12.                         public void run() {
  13.                                 while (t) {
  14.                                         // 接收set发送的消息
  15.                                         byte[] b = new byte[1024]; //
  16.                                         DatagramPacket dp = new DatagramPacket(b, b.length);// 将从b到b.length都进行打包
  17.                                         try {
  18.                                                 get.receive(dp);
  19.                                         } catch (IOException e) {
  20.                                                 // TODO Auto-generated catch block
  21.                                                 e.printStackTrace();
  22.                                         } // 接受这个包
  23.                                         int length = dp.getLength();// 获取这个包的长度
  24.                                         // System.out.println(new String(b,0,length)); //转化成字符串然后输出
  25.                                         System.out.println("消息是由" + dp.getAddress() + "发送的,端口是:"
  26.                                                         + dp.getPort() + "内容是" + new String(b, 0, length));
  27.                                 }
  28.                         }
  29.                 }).start();
  30.                 new Thread(new Runnable() {

  31.                         @Override
  32.                         public void run() {
  33.                                 while (t) {
  34.                                         // 往set回复消息
  35.                                         try {
  36.                                                 Scanner sc = new Scanner(System.in);
  37.                                                 String str = sc.nextLine();
  38.                                                 DatagramPacket send = new DatagramPacket(
  39.                                                                 str.getBytes(), str.getBytes().length,
  40.                                                                 InetAddress.getLocalHost(), 6666);
  41.                                                 get.send(send);
  42.                                         } catch (IOException e) {
  43.                                                 // TODO Auto-generated catch block
  44.                                                 e.printStackTrace();
  45.                                         }
  46.                                 }
  47.                         }
  48.                 }).start();
  49.                 // get.close();
  50.         }
  51. }
复制代码

1 个回复

倒序浏览


  1. import java.io.IOException;
  2. import java.net.DatagramPacket;
  3. import java.net.DatagramSocket;
  4. import java.net.InetAddress;
  5. import java.util.Scanner;

  6. //利用UDP协议编写 实现客户端和服务器
  7. //此类是输出端
  8. public class DemoSet {
  9.         public static void main(String[] args) throws Exception {
  10.                 final DatagramSocket set = new DatagramSocket(6666);
  11.                 final boolean t = true;
  12.                 new Thread(new Runnable() {

  13.                         @Override
  14.                         public void run() {
  15.                                 while (t) {
  16.                                         try {
  17.                                                 // 往服务器发送消息
  18.                                                 Scanner sc = new Scanner(System.in);
  19.                                                 String str = sc.nextLine();
  20.                                                 DatagramPacket dp = new DatagramPacket(str.getBytes(),
  21.                                                                 str.getBytes().length,
  22.                                                                 InetAddress.getLocalHost(), 9999);

  23.                                                 set.send(dp);
  24.                                         } catch (IOException e) {
  25.                                                 e.printStackTrace();
  26.                                         }
  27.                                 }
  28.                         }
  29.                 }).start();
  30.                 new Thread(new Runnable() {

  31.                         @Override
  32.                         public void run() {
  33.                                 while (t) {
  34.                                         // 从get类里面获取消息
  35.                                         byte[] b = new byte[1024];
  36.                                         DatagramPacket re = new DatagramPacket(b, b.length);
  37.                                         try {
  38.                                                 set.receive(re);
  39.                                         } catch (IOException e) {
  40.                                                 e.printStackTrace();
  41.                                         }
  42.                                         int length = re.getLength();
  43.                                         System.out.println("消息是由" + re.getAddress() + "返回的,它的端口是"
  44.                                                         + re.getPort() + ",输出的内容是"
  45.                                                         + new String(b, 0, length));
  46.                                 }
  47.                         }
  48.                 }).start();
  49.                 // set.close();// 用了线程 就没必要存在了
  50.         }
  51. }
复制代码
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马