java使用UDP数据报通讯方式QQ聊天系统:服务器、客户端
来源:互联网 发布:淘宝二手镜头店铺推荐 编辑:程序博客网 时间:2024/05/22 11:38
全栈工程师开发手册 (作者:栾鹏)
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{ //使用构造器,创建使用本机任何可用端口的数据包Socket socket = new DatagramSocket(); //获取本地IP hostAddress = 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"); }}
阅读全文
0 0
- java使用UDP数据报通讯方式QQ聊天系统:服务器、客户端
- UDP通讯:服务器与客户端
- Java.聊天系统.UDP
- 数据报(UDP)套接字客户端/服务器编程
- UDP聊天穿透(服务器+客户端)源码
- linux 下简单的模拟QQ 聊天过程 UDP 通讯
- 使用Java实现数据报通讯过程
- 使用Java实现数据报通讯过程
- 使用Java实现数据报通讯过程
- Java局域网聊天系统(服务器客户端一对一)
- qq项目第三天(客户端通讯,可以互相聊天)
- QQ聊天通讯原理
- java的UDP协议通讯的客户端
- Java基础---Java---网络编程---TCP、UDP、UDP-键盘录入方式数据、Socket、TCP复制文件、UDP-聊天
- java使用UDP协议进行服务器客户端通信
- Java UDP多人聊天系统
- Java数据报Datagram通讯
- UDP通讯(客户端)
- 看完让你彻底搞懂Websocket原理
- 总结2
- 第三方类库-JSON-Google Gson
- Loadrunner Lr_类函数之事务函数扩展判断事务是否成功的5种方法
- 杭电1012 u Calculate e
- java使用UDP数据报通讯方式QQ聊天系统:服务器、客户端
- 设计模式之观察者模式
- 爬虫学习(一)---爬取电影天堂下载链接
- linux系统管理和安全相关命令
- SDUT 3347 数据结构实验之数组三:快速转置
- 顺序表应用3:元素位置互换之移位算法
- bzoj 2655: calc dp+拉格朗日插值法
- Linux开机引导流程
- 10.12离线赛