Java使用UDP聊天程序
主要想测试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聊天程序相关推荐
- 利用java编写网络聊天程序并加密信息
利用java编写网络聊天程序并加密信息 优化了代码后的地址:https://blog.csdn.net/qq_43483251/article/details/125470514?spm=1001.2 ...
- Delphi-网络编程-UDP聊天程序(转)
源:Delphi-网络编程-第一个网络方面作品(UDP聊天程序)
- 设计一个聊天窗口java代码,Java 设计的聊天程序-完整代码
[实例简介] 这是一个Java 课程设计,模仿MSN.QQ等的界面.压缩包内有源码跟使用方法! [实例截图] [核心代码] Java设计的聊天程序-完整源码 └── Java 设计的聊天程序-完整源码 ...
- java实现的聊天程序
//利用GUI和网络编程知识,建立一个简单的聊天程序.package cn.itcast.udp.exercise;import java.awt.BorderLayout; import java. ...
- c++语言socket udp聊天程序,使用C/C++实现Socket聊天程序
使用C/C++实现Socket聊天程序 Initsock.h文件 // initsock.h文件 #include #include #include #include #pragma comment ...
- c语言实现udp 聊天程序代码,C语言用UDP 实现局域网聊天程序源码.doc
您所在位置:网站首页 > 海量文档  > 计算机 > C/C++资料 C语言用UDP 实现局域网聊天程序源码.doc1 ...
- java多客户端聊天程序,java – 多客户端聊天程序,向所有客户端广播聊天?
我正在尝试制作一个可以容纳多个客户端的非常简单的聊天程序.我有一个多线程服务器,可以连接多个客户端,但服务器只与单个客户端通信(因为它应该,每个客户端都在自己的线程上)我需要帮助让服务器发送来自所有连 ...
- Java实现网络聊天程序的设计与实现(基于UDP协议)
目录 TCP/IP协议介绍 Java中socket编程 测试结果 TCP/IP协议介绍 TCP/IP协议包含的范围非常的广,它是一种四层 ...
- 用java编写一个聊天程序_基于JAVA实现的一个简单的网络聊天程序
一.Java Socket的概述 1.Socket套接字方便了开发网络应用程序.TCP面向连接的可靠传输协议.具有数据确认和数据重传机制.保证了发送数据一定能到达通信的对方.UPD协议无连接,不可靠的 ...
最新文章
- 【建议收藏】Spring Boot注解全梳理!
- WinFrom子窗体向父窗体传值
- libtorch调用resnet
- 全球及中国数字电视产业盈利模式及发展动态建议报告2021-2027年
- 稀疏自编码器_基于tf实现稀疏自编码和在推荐中的应用
- java的守护线程与非守护线程
- 长连接和Keepalive详解
- java filedialog 打开文件_java 用文件对话框打开文件
- 中国人工智能学会通讯——智能系统测评:挑战和机遇
- Host localhost is not allowed to connect to mysql server解决方法
- python多进程_python学习笔记:多进程
- SQLite数据库的使用——利用命令行或Navicat Premium创建数据库
- QQ 腾讯QQ(简称“QQ”)是腾讯公司开发的一款基于Internet的即时通信(IM)软件...
- 如何使用tcpdump来捕获TCP SYN,ACK和FIN包
- 高数——两个重要极限
- python迅雷下载任务出错_迅雷下载任务出错的原因和解决方法 来研究下吧
- 关于导出文件中文名乱码问题,response.setHeader(),postman测试有误,直接用浏览器测试
- vscode在html看到图片的插件_PPT做得又慢又丑?低调分享3款PPT辅助插件,轻松制作炫酷PPT...
- QQ宠物明信片收到啦
- 单链表中倒数第K个结点
热门文章
- python按条件拆分列表元素_如何通过在python中拆分列表元素来创建列表?
- springboot处理参数再转发请求_SpringBoot是如何解析HTTP参数的
- 高德地图 街道范围_高德地图发布交通“评诊治”系统:针对各类交通拥堵场景“因地制宜”...
- 查看进程状态信息命令 jps - (Java Virtual Machine Process Status Tool)
- vue中img标签onerror事件
- vue实现查询多条记录_sql:多表查询
- 字典序最小是什么意思_《拓扑序简介》第十六讲
- cvs有机添加剂检测_汽车到底有没有必要添加燃油添加剂,如果需要加从什么时间开始用...
- 农村信用社计算机基础知识,2014年云南省农村信用社考试计算机基础知识练习题...
- java 置顶_[置顶]java开发之基础篇2