使用JAVA线程写的一个UDP简易通讯程序(三)
来源:互联网 发布:阿里云cdn如何配置 编辑:程序博客网 时间:2024/05/14 21:42
好记性不如赖笔头…………
服务器代码package com.ckinghan.client;import java.io.IOException;import java.net.DatagramPacket;import java.net.DatagramSocket;import java.net.InetAddress;import java.net.SocketException;public class UDPServer implements Runnable{ //接口 private int prot; //构造方法 public UDPServer(int prot) { super(); this.prot = prot; } @Override public void run() { //创建对象 DatagramSocket datagramSocket = null; try { //实例化对象 datagramSocket = new DatagramSocket(prot); //接收最大的字节数(注意UDP最多一次性只能传送64K的数据) byte[] bs = new byte[1024]; //创建接收传过来的消息对象 DatagramPacket datagramPacket = new DatagramPacket(bs, bs.length); //提示 System.out.println("服务端已启动:"); //循环接收数据 while (true) { //接收数据并将数据传给datagramPacket datagramSocket.receive(datagramPacket); //获取接收到的字节长度 int len = datagramPacket.getLength(); //获取接收到的消息数据 byte[] message = datagramPacket.getData(); //将接收到的字节转换为字符并指定编码 String getMessage = new String(message, 0, len,"UTF-8"); //获取客户端的IP地址 InetAddress inetAddress = datagramPacket.getAddress(); //如果用户要退出 if("close".equals(getMessage.toLowerCase())){ break; } //输出用户的发送的消息内容 System.out.println(inetAddress.getHostAddress()+"的用户说:"+getMessage); } } catch (SocketException e) { e.printStackTrace(); }catch (IOException e) { e.printStackTrace(); }finally { //关闭流 if(datagramSocket != null){ datagramSocket.close(); } } }}
客户端代码package com.ckinghan.client;import java.io.BufferedInputStream;import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.net.DatagramPacket;import java.net.DatagramSocket;import java.net.InetAddress;import java.net.SocketException;public class UDPClient implements Runnable{ //服务器IP private String ip; //通讯接口 private int prot; //构造 方法 public UDPClient(String ip,int prot) { super(); this.ip = ip; this.prot = prot; } @Override public void run() { //创建对象 DatagramSocket datagramSocket = null; BufferedReader bufferedReader = null; try { //创建IP InetAddress inetAddress = InetAddress.getByName(ip); //实例化对象 datagramSocket = new DatagramSocket(); //从控制台接收数据 bufferedReader = new BufferedReader(new InputStreamReader(System.in)); //提示 System.out.println("客户端已启动,等待输入:"); //循环 while (true) { //接收从控制台输入的数据 String sendMessageByte = bufferedReader.readLine(); //将输入的数据转换字节数组,并指定编码 byte[] bs = sendMessageByte.getBytes("UTF-8"); //创建连接 DatagramPacket datagramPacket = new DatagramPacket(bs, bs.length, inetAddress, prot); //写入要发送的消息 datagramPacket.setData(bs); //发送消息 datagramSocket.send(datagramPacket); //如果用户要退出 if("close".equals(new String(sendMessageByte).toLowerCase())){ break; } } } catch (SocketException e) { e.printStackTrace(); } catch (java.net.UnknownHostException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); }finally { //关闭流 if(datagramSocket != null) datagramSocket.close(); if(bufferedReader != null){ try { bufferedReader.close(); } catch (IOException e) { e.printStackTrace(); } } } }}
启动代码 1
package com.ckinghan.client;public class StartThread { public static void main(String[] args) { //创建服务器对象并指定端口 UDPServer udpServer = new UDPServer( 10001); //创建客户端对象,并指定服务器地址、端口 UDPClient udpClient = new UDPClient("192.168.0.124", 10000); //创建线程 Thread server = new Thread(udpServer); Thread client = new Thread(udpClient); //启动线程 server.start(); client.start(); }}
启动二
package com.ckinghan.client;public class StartThread { public static void main(String[] args) { //创建服务器对象并指定端口 UDPServer udpServer = new UDPServer( 10000); //创建客户端对象,并指定服务器地址、端口 UDPClient udpClient = new UDPClient("192.168.0.124", 10001); //创建线程 Thread server = new Thread(udpServer); Thread client = new Thread(udpClient); //启动线程 server.start(); client.start(); }}
阅读全文
0 0
- 使用JAVA线程写的一个UDP简易通讯程序(三)
- 使用JAVA写的一个简易通讯程序(一)
- 使用JAVA写的一个简易TCP通讯程序(一)
- 一个简易的UDP Proxy程序zz
- 一个简易的UDP Proxy程序
- Java Udp通讯程序
- 通过JAVA程序写一个简易的记事本
- 使用winsock+UDP写的一个简单接收端程序
- 使用winsock+UDP写的一个简单发送端程序
- UDP的简易聊天程序 (未写注释和程序感想)
- 使用winsock+UDP写的一个简单发送端程序(转)
- 使用winsock+UDP写的一个简单接收端程序(转)
- Java 简易通讯簿程序
- 使用nodejs写一个简易的爬虫
- 用java写的一个简易记事本
- java线程写的一个小程序,全过程
- C#使用线程写一个服务器程序
- 在用JAVA写一个简易CAD程序时的笔记
- 分支限界算法-BFS
- CSDN主办2017 OpenStack Days China将于7月在京召开!
- 拆分json数据,重组打包成新的json数组
- 平衡二叉树(AVL树)
- Android Studio Kotlin 开发环境配置
- 使用JAVA线程写的一个UDP简易通讯程序(三)
- 对泰坦尼克号案例进行数据挖掘
- python hashlib sha1和MD5哈希算法
- android performClick使用说明
- android studio编译的时候提示gradle版本不对
- 运用贝塞尔曲线描绘android翻页效果
- Count on a tree SPOJ
- C++更改文件名
- PHP$a[]和$a的区别