主要想测试Java UDP通信。Java UDP使用DatagramSocket和DatagramPacket完成UDP通信

主要思路:

1.本机通信,ip地址为:127.0.0.1

2.开一个线程监听一个端口

3.向端口发送消息

4.运行程序java ChatWindow desport listenport

ChatWindow.java

  1 import java.io.IOException;
  2 import java.net.DatagramPacket;
  3 import java.net.DatagramSocket;
  4 import java.net.InetAddress;
  5 import java.net.InetSocketAddress;
  6 import java.util.Scanner;
  7
  8 /**
  9  * 聊天小程序
 10  * 使用UDP进行通信
 11  * 开一个线程,监听一个端口,接收消息
 12  * 这里主要用于本机通信,IP为127.0.0.1
 13  *
 14  * 发送消息正常,接收消息没反应
 15  * @author GXF
 16  *
 17  */
 18 public class ChatWindow {
 19     private int listenPort;                    //监听端口
 20     private int desPort;                    //目标端口
 21
 22     /**
 23      * 初始化目的端口和监听端口
 24      * @param desPort
 25      * @param listenPort
 26      */
 27     public ChatWindow(int desPort, int listenPort){
 28         this.desPort = desPort;
 29         this.listenPort = listenPort;
 30
 31         //启动监听线程
 32         Thread listenMessageThread = new Thread(new ReceiveMessage());
 33         listenMessageThread.start();
 34
 35         System.out.println("程序已启动,愉快的开始聊天吧!");
 36         //接收用户输入的消息
 37         Scanner scanner = new Scanner(System.in);
 38         while(true){
 39             String message = scanner.nextLine();
 40             sendMessag(message);
 41         }
 42     }
 43
 44     /**
 45      * 向目的端口发送一个消息
 46      * @param message
 47      */
 48     public void sendMessag(String message){
 49         //初始化一个socket
 50         //设置好数据包
 51         //发送消息
 52         try {
 53             DatagramSocket socketToSendMessage = new DatagramSocket();
 54             byte buff[] = message.getBytes();
 55             DatagramPacket packetToSend = new DatagramPacket(buff, buff.length, InetAddress.getByName("127.0.0.1"), desPort);
 56             socketToSendMessage.send(packetToSend);                                         //发送消息
 57             socketToSendMessage.close();                                                    //关闭socket
 58         } catch (Exception e) {
 59             e.printStackTrace();
 60         }
 61     }
 62
 63
 64     /**
 65      * 监听端口线程
 66      * 实例化一个DatagramSocket,并绑定一个端口进行监听
 67      * @author GXF
 68      *
 69      */
 70     class ReceiveMessage implements Runnable{
 71         private DatagramSocket listenSocket;
 72         private DatagramPacket receivePacket;
 73         private byte buff[] = new byte[1024];
 74         @Override
 75         public void run() {
 76             //init
 77             init();
 78             //start 监听
 79             while(true){
 80                 try {
 81                     listenSocket.receive(receivePacket);                    //接收数据包
 82                     String receiveMessage = new String(receivePacket.getData(), 0, receivePacket.getLength());
 83                     System.out.println(receiveMessage);                        //输出接收到的消息
 84                 } catch (IOException e) {
 85                     e.printStackTrace();
 86                 }
 87             }
 88
 89         }
 90
 91         /**
 92          * 对socket,端口,进行初始化
 93          */
 94         public void init(){
 95             try {
 96                 InetSocketAddress serverSocketAddress = new InetSocketAddress(listenPort);
 97                 listenSocket = new DatagramSocket(serverSocketAddress);
 98                 receivePacket = new DatagramPacket(buff, buff.length);
 99             } catch (Exception e) {
100                 e.printStackTrace();
101             }
102         }
103     }
104
105     public static void main(String[] args) {
106         if(args.length != 2)
107         {
108             System.out.println("usage: java ChatWindow desport listenport");
109             return;
110         }
111         int desport = Integer.valueOf(args[0]);
112         int listenPort = Integer.valueOf(args[1]);
113         //first is desport, seconde is listenport
114         ChatWindow chatWindow = new ChatWindow(desport, listenPort);
115
116
117     }
118
119 }

转载于:https://www.cnblogs.com/luckygxf/p/4929275.html

Java使用UDP聊天程序相关推荐

  1. 利用java编写网络聊天程序并加密信息

    利用java编写网络聊天程序并加密信息 优化了代码后的地址:https://blog.csdn.net/qq_43483251/article/details/125470514?spm=1001.2 ...

  2. Delphi-网络编程-UDP聊天程序(转)

    源:Delphi-网络编程-第一个网络方面作品(UDP聊天程序)

  3. 设计一个聊天窗口java代码,Java 设计的聊天程序-完整代码

    [实例简介] 这是一个Java 课程设计,模仿MSN.QQ等的界面.压缩包内有源码跟使用方法! [实例截图] [核心代码] Java设计的聊天程序-完整源码 └── Java 设计的聊天程序-完整源码 ...

  4. java实现的聊天程序

    //利用GUI和网络编程知识,建立一个简单的聊天程序.package cn.itcast.udp.exercise;import java.awt.BorderLayout; import java. ...

  5. c++语言socket udp聊天程序,使用C/C++实现Socket聊天程序

    使用C/C++实现Socket聊天程序 Initsock.h文件 // initsock.h文件 #include #include #include #include #pragma comment ...

  6. c语言实现udp 聊天程序代码,C语言用UDP 实现局域网聊天程序源码.doc

    您所在位置:网站首页 > 海量文档 &nbsp>&nbsp计算机&nbsp>&nbspC/C++资料 C语言用UDP 实现局域网聊天程序源码.doc1 ...

  7. java多客户端聊天程序,java – 多客户端聊天程序,向所有客户端广播聊天?

    我正在尝试制作一个可以容纳多个客户端的非常简单的聊天程序.我有一个多线程服务器,可以连接多个客户端,但服务器只与单个客户端通信(因为它应该,每个客户端都在自己的线程上)我需要帮助让服务器发送来自所有连 ...

  8. Java实现网络聊天程序的设计与实现(基于UDP协议)

    目录         TCP/IP协议介绍         Java中socket编程         测试结果 TCP/IP协议介绍         TCP/IP协议包含的范围非常的广,它是一种四层 ...

  9. 用java编写一个聊天程序_基于JAVA实现的一个简单的网络聊天程序

    一.Java Socket的概述 1.Socket套接字方便了开发网络应用程序.TCP面向连接的可靠传输协议.具有数据确认和数据重传机制.保证了发送数据一定能到达通信的对方.UPD协议无连接,不可靠的 ...

最新文章

  1. 【建议收藏】Spring Boot注解全梳理!
  2. WinFrom子窗体向父窗体传值
  3. libtorch调用resnet
  4. 全球及中国数字电视产业盈利模式及发展动态建议报告2021-2027年
  5. 稀疏自编码器_基于tf实现稀疏自编码和在推荐中的应用
  6. java的守护线程与非守护线程
  7. 长连接和Keepalive详解
  8. java filedialog 打开文件_java 用文件对话框打开文件
  9. 中国人工智能学会通讯——智能系统测评:挑战和机遇
  10. Host localhost is not allowed to connect to mysql server解决方法
  11. python多进程_python学习笔记:多进程
  12. SQLite数据库的使用——利用命令行或Navicat Premium创建数据库
  13. QQ 腾讯QQ(简称“QQ”)是腾讯公司开发的一款基于Internet的即时通信(IM)软件...
  14. 如何使用tcpdump来捕获TCP SYN,ACK和FIN包
  15. 高数——两个重要极限
  16. python迅雷下载任务出错_迅雷下载任务出错的原因和解决方法 来研究下吧
  17. 关于导出文件中文名乱码问题,response.setHeader(),postman测试有误,直接用浏览器测试
  18. vscode在html看到图片的插件_PPT做得又慢又丑?低调分享3款PPT辅助插件,轻松制作炫酷PPT...
  19. QQ宠物明信片收到啦
  20. 单链表中倒数第K个结点

热门文章

  1. python按条件拆分列表元素_如何通过在python中拆分列表元素来创建列表?
  2. springboot处理参数再转发请求_SpringBoot是如何解析HTTP参数的
  3. 高德地图 街道范围_高德地图发布交通“评诊治”系统:针对各类交通拥堵场景“因地制宜”...
  4. 查看进程状态信息命令 jps - (Java Virtual Machine Process Status Tool)
  5. vue中img标签onerror事件
  6. vue实现查询多条记录_sql:多表查询
  7. 字典序最小是什么意思_《拓扑序简介》第十六讲
  8. cvs有机添加剂检测_汽车到底有没有必要添加燃油添加剂,如果需要加从什么时间开始用...
  9. 农村信用社计算机基础知识,2014年云南省农村信用社考试计算机基础知识练习题...
  10. java 置顶_[置顶]java开发之基础篇2