java使用UDP数据报通讯方式QQ聊天系统:服务器、客户端
全栈工程师开发手册 (作者:栾鹏)
java教程全解
java实现UDP服务器、客户端
java实现qq聊天系统,需要知道彼此的ip地址和端口号。
数据传输使用UDP数据包,我们将首先发送数据的设为客户端,将响应回复的设为服务器端。
所以需要先启动服务器端,等待客服端的发起,再启动客户端发起数据传输。使用控制台作为数据的输入和输出。
服务器端代码
package com.lp.app.net;import java.net.*;
import java.io.*;
import java.util.*;
//使用udp数据报创建的聊天服务器
public class UDPServer{public static void main(String[] args){new UDPServer();}static final int PORT = 4000;//设置服务端口private byte[] buf = new byte[1000];private DatagramPacket dgp =new DatagramPacket(buf,buf.length);private DatagramSocket sk;
//服务端构造器,实现读取用户输入和通讯public UDPServer(){try{//实例化数据报sk = new DatagramSocket(PORT);System.out.println("服务器启动.................");while(true){//等待接收sk.receive(dgp);//获取接收信息String rcvd = "接收到包来自 "+ dgp.getAddress() + ", " + dgp.getPort() + ": "+ new String(dgp.getData(),0,dgp.getLength());System.out.println(rcvd);String outMessage =""; //读取输入BufferedReader stdin = new BufferedReader(new InputStreamReader(System.in));try{outMessage = stdin.readLine();}catch(IOException ie){System.err.println("IO error!");}String outString = "服务器说: "+ outMessage;//拷贝字符到缓存byte[] buf = outString.getBytes();//打包数据,发送回信息。DatagramPacket out = new DatagramPacket(buf,buf.length,dgp.getAddress(),dgp.getPort());sk.send(out);}}catch(SocketException e){System.err.println("Can't open socket");System.exit(1);}catch(IOException e){System.err.println("Communication error");e.printStackTrace();System.exit(1);}}}
客户端代码
package com.lp.app.net;import java.net.*;
import java.io.*;
//这是一个使用udp数据报通讯方式的聊天程序的客户端
public class UDPClient{public static void main(String[] args){new UDPClient();}private DatagramSocket socket;private InetAddress hostAddress;private byte[] buf = new byte[1000];private DatagramPacket dp = new DatagramPacket(buf,buf.length);//构造器,这里实现接收用户输入和与服务器通讯public UDPClient(){try{//使用构造器,创建使用本机任何可用端口的数据包Socketsocket = new DatagramSocket();//获取本地IPhostAddress = InetAddress.getByName("localhost");System.out.println("客户端启动............");while(true){String outMessage =""; //读取输入BufferedReader stdin = new BufferedReader(new InputStreamReader(System.in));try{outMessage = stdin.readLine();}catch(IOException ie){System.err.println("IO error!");}String outString = "客户端说: "+ outMessage;byte[] buf = outString.getBytes();//打包数据,发送数据DatagramPacket out = new DatagramPacket(buf,buf.length,hostAddress,UDPServer.PORT);socket.send(out);//等待服务器返回socket.receive(dp);String rcvd = "接收到包来自 "+ dp.getAddress() + ", " + dp.getPort() + ": "+ new String(dp.getData(),0,dp.getLength());System.out.println(rcvd);}}catch(UnknownHostException e){System.out.println("Can;t open socket");System.exit(1);}catch(SocketException e){System.out.println("Can;t open socket");e.printStackTrace();System.exit(1);}catch(IOException e){System.err.println("Communication error");e.printStackTrace();System.exit(1);}catch(Exception e){System.err.println("Communication error");e.printStackTrace();System.exit(1);}System.out.println("ChatClient over");}}
java使用UDP数据报通讯方式QQ聊天系统:服务器、客户端相关推荐
- java wsl连接tuxedo_Tuxedo 通讯方式解析(二)
上一节简单介绍了tuxedo是什么,并且详细介绍了安装过程.我们学这个的目的就是让其能够跑起来,这一节就根据tuxedo自带samples的例子,让其运行起来.并通过这个例子,深入的理解tuxedo的 ...
- 打开软件就遍历桌面和D盘的软件名通过UDP广播的方式发出。服务器监听指定的端口可以获得文件夹名称。不会暴露自己的IP
客户端,运行会遍历桌面,和 D 盘所有文件的名称,通过UDP广播的方式发送出去,服务器需要体检开启,并监听对应的端口号. import java.io.File; import java.net.Da ...
- java实现qq_java实现的类似qq聊天系统
[实例简介] java实现的类似qq的聊天系统,并且对数据进行了加密,包含网络安全相关的知识.可以作为毕业设计. [实例截图] [核心代码] WebSecurity └── WebSecurity ├ ...
- java 前置系统报文通讯方式_银行核心与前置系统的区别
银行核心与前置系统的区别 目前行业界对银行核心的定义是传统业务的集中处理,这些传统业务的核心都是基于数据记录为基础的业务集中交易. 一.从历史的演变看银行核心和前置系统的诞生 从银行电子化发展的历史我 ...
- 仿QQ聊天系统(JAVA+MySQL)
摘 要 仿QQ聊天系统是基于MySQL数据库开发工具进行设计,理论研究与实践相结合,利用计算机技术.数据库技术,java技术等对腾讯QQ聊天系统的开发设计进行研究 以JAVA技术为核心,利用计算机局 ...
- Java实现简单的本地QQ聊天系统
利用Java编写的一个简单的群聊程序,模仿QQ群聊,利用本地通讯,实现了简单的群聊功能. 源码请自取: csdn资源下载传送门(免费) 程序共分为3个包 (先编译运行TerminalServerVie ...
- 复习Java第二个项目仿QQ聊天系统 01(界面部分) Java面试题Redis的过期策略和内存淘汰策略生活【记录一个咸鱼大学生三个月的奋进生活】023
记录一个咸鱼大学生三个月的奋进生活023 复习Java(仿QQ聊天系统01界面部分) 设置背景(ImgPanel)类 登录界面(LoginFrame)类 注册界面(RegisterFrame)类 好友 ...
- 复习Java第二个项目仿QQ聊天系统 03(两种通信类、登录以及注册功能完善) Java面试题并发编程相关知识生活【记录一个咸鱼大学生三个月的奋进生活】025
记录一个咸鱼大学生三个月的奋进生活025 复习Java(仿QQ聊天系统03两种通信类.登录以及注册功能完善) TcpSocket类(与服务器进行通信) Server类(服务器类) TcpMessage ...
- java udp 心跳,udp简略通讯示例-心跳示例
当前位置:我的异常网» 软件架构设计 » udp简略通讯示例-心跳示例 udp简略通讯示例-心跳示例 www.myexceptions.net 网友分享于:2013-09-04 浏览:44次 ud ...
最新文章
- python数据模型的意义_Python 数据模型
- 产品经理如何在技术人员面前更有说服力?
- PHP类继承、接口继承关系概述
- 温故而知新-面向对象的PHP
- UDP用打洞技术穿透NAT的原理与实现
- 第三篇:稳定性之借风险之力驱动架构演进
- C++ STL 容器元素排列之next_permutation和prev_permutation的使用示范
- docker_6 Docker 网络
- idea修改项目编码
- java Structs 介绍
- java dao 单元测试,你应该如何单元测试DAO层
- 58赶集基于 Docker 的自动化部署实践
- 计算机病毒的分类与防范 论文,浅析计算机病毒与防范措施
- java获取时分秒毫秒_Calendar获取年月日时分秒毫秒
- Vagrant 手册之同步目录 - 基本用法
- 二进制和文本文件的比较
- 24.4. Prompting
- 从 Azure Databricks 访问 Azure Blob 存储
- 相机数据恢复,60%的人都在用的黄金方案
- L-System分形小结
热门文章
- 一种基于语音识别的机器人语义识别系统的制作方法
- 商品二因素、劳动二重性
- vue 生成二维码:vue-qr插件
- 媒体查询Media Query
- 最简单的基于FFmpeg的移动端例子:IOS HelloWorld
- 使用 JNA 模拟C语言结构体的完整源代码
- python结束多线程_如何中断/停止/结束挂起的多线程python程序
- 鼎微方案导航一体机刷机包_SMB方案之星 | 海康威视人脸门禁一体机产品应用方案集锦...
- bigdecimal java 最大值_Java中的数学运算BigDecimal
- fatal: remote origin already exists