黑马程序员技术交流社区

标题: 实现局域网消息的发送功能实现 [打印本页]

作者: 不安分的程序猿    时间: 2016-5-19 23:42
标题: 实现局域网消息的发送功能实现
  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. }
复制代码

作者: 不安分的程序猿    时间: 2016-5-19 23:44


  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. }
复制代码





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2