全栈工程师开发手册 (作者:栾鹏)
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. java 启动加载顺序_Java 程序的加载运行过程 | 学步园
  2. 你的云计算到底有多安全?
  3. iptables(下)规则
  4. UE4学习-材质快捷键及材质帮助手册
  5. java控制台输出百分比进度条示例
  6. Cookie 解说(分类、用途、缺陷、功能 ...)
  7. 物联网卡不能使用的情况有哪些
  8. poj 3007 stl
  9. 算法导论第三版课后答案-2-25章(部分中文).pdf 免积分下载
  10. 软考高项优秀范文——论信息系统项目的风险管理
  11. utf-8格式如何转化为gbk格式
  12. 前期交互流程(PTES的第一步)
  13. 资源网站(电驴替代方案)
  14. 新手学编程的常见困惑
  15. vs2015 帮助内容_我在2015年阅读的内容
  16. 最简单的pentaho report desinger 5.01报表的制作
  17. 史上最全Git命令学习:从基础出发,Java中高级面试题总结(全面)
  18. 【小程序】之net::ERR_NAME_NOT_RESOLVED的问题
  19. 【学习挑战赛】经典算法之折半查找
  20. 北醒激光雷达模组 资料汇总

热门文章

  1. block的理解 ios_深入理解iOS的block (下)
  2. 【二分法】计蒜客:二分答案
  3. vscode设置templates_Vscode中快速创建自定义代码模板的方法
  4. 如何把竖排的数据变为横排_读懂微信改版背后的焦虑,企业新媒体营销该如何自救?...
  5. python如何检查错误-python中的错误如何查看
  6. 计算机实验内容记录,关于实验数据自动记录到电脑上的问题
  7. index android js,reactjs – React Native项目没有index.ios.js或index.android.js
  8. TLS certificate verification has been disabled
  9. Element-UI中el-input输入值不显示
  10. layUI固定列重复