全栈工程师开发手册 (作者:栾鹏)
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聊天系统:服务器、客户端相关推荐

  1. java wsl连接tuxedo_Tuxedo 通讯方式解析(二)

    上一节简单介绍了tuxedo是什么,并且详细介绍了安装过程.我们学这个的目的就是让其能够跑起来,这一节就根据tuxedo自带samples的例子,让其运行起来.并通过这个例子,深入的理解tuxedo的 ...

  2. 打开软件就遍历桌面和D盘的软件名通过UDP广播的方式发出。服务器监听指定的端口可以获得文件夹名称。不会暴露自己的IP

    客户端,运行会遍历桌面,和 D 盘所有文件的名称,通过UDP广播的方式发送出去,服务器需要体检开启,并监听对应的端口号. import java.io.File; import java.net.Da ...

  3. java实现qq_java实现的类似qq聊天系统

    [实例简介] java实现的类似qq的聊天系统,并且对数据进行了加密,包含网络安全相关的知识.可以作为毕业设计. [实例截图] [核心代码] WebSecurity └── WebSecurity ├ ...

  4. java 前置系统报文通讯方式_银行核心与前置系统的区别

    银行核心与前置系统的区别 目前行业界对银行核心的定义是传统业务的集中处理,这些传统业务的核心都是基于数据记录为基础的业务集中交易. 一.从历史的演变看银行核心和前置系统的诞生 从银行电子化发展的历史我 ...

  5. 仿QQ聊天系统(JAVA+MySQL)

    摘  要 仿QQ聊天系统是基于MySQL数据库开发工具进行设计,理论研究与实践相结合,利用计算机技术.数据库技术,java技术等对腾讯QQ聊天系统的开发设计进行研究 以JAVA技术为核心,利用计算机局 ...

  6. Java实现简单的本地QQ聊天系统

    利用Java编写的一个简单的群聊程序,模仿QQ群聊,利用本地通讯,实现了简单的群聊功能. 源码请自取: csdn资源下载传送门(免费) 程序共分为3个包 (先编译运行TerminalServerVie ...

  7. 复习Java第二个项目仿QQ聊天系统 01(界面部分) Java面试题Redis的过期策略和内存淘汰策略生活【记录一个咸鱼大学生三个月的奋进生活】023

    记录一个咸鱼大学生三个月的奋进生活023 复习Java(仿QQ聊天系统01界面部分) 设置背景(ImgPanel)类 登录界面(LoginFrame)类 注册界面(RegisterFrame)类 好友 ...

  8. 复习Java第二个项目仿QQ聊天系统 03(两种通信类、登录以及注册功能完善) Java面试题并发编程相关知识生活【记录一个咸鱼大学生三个月的奋进生活】025

    记录一个咸鱼大学生三个月的奋进生活025 复习Java(仿QQ聊天系统03两种通信类.登录以及注册功能完善) TcpSocket类(与服务器进行通信) Server类(服务器类) TcpMessage ...

  9. java udp 心跳,udp简略通讯示例-心跳示例

    当前位置:我的异常网» 软件架构设计 » udp简略通讯示例-心跳示例 udp简略通讯示例-心跳示例 www.myexceptions.net  网友分享于:2013-09-04  浏览:44次 ud ...

最新文章

  1. python数据模型的意义_Python 数据模型
  2. 产品经理如何在技术人员面前更有说服力?
  3. PHP类继承、接口继承关系概述
  4. 温故而知新-面向对象的PHP
  5. UDP用打洞技术穿透NAT的原理与实现
  6. 第三篇:稳定性之借风险之力驱动架构演进
  7. C++ STL 容器元素排列之next_permutation和prev_permutation的使用示范
  8. docker_6 Docker 网络
  9. idea修改项目编码
  10. java Structs 介绍
  11. java dao 单元测试,你应该如何单元测试DAO层
  12. 58赶集基于 Docker 的自动化部署实践
  13. 计算机病毒的分类与防范 论文,浅析计算机病毒与防范措施
  14. java获取时分秒毫秒_Calendar获取年月日时分秒毫秒
  15. Vagrant 手册之同步目录 - 基本用法
  16. 二进制和文本文件的比较
  17. 24.4. Prompting
  18. 从 Azure Databricks 访问 Azure Blob 存储
  19. 相机数据恢复,60%的人都在用的黄金方案
  20. L-System分形小结

热门文章

  1. 一种基于语音识别的机器人语义识别系统的制作方法
  2. 商品二因素、劳动二重性
  3. vue 生成二维码:vue-qr插件
  4. 媒体查询Media Query
  5. 最简单的基于FFmpeg的移动端例子:IOS HelloWorld
  6. 使用 JNA 模拟C语言结构体的完整源代码
  7. python结束多线程_如何中断/停止/结束挂起的多线程python程序
  8. 鼎微方案导航一体机刷机包_SMB方案之星 | 海康威视人脸门禁一体机产品应用方案集锦...
  9. bigdecimal java 最大值_Java中的数学运算BigDecimal
  10. fatal: remote origin already exists