使用JAVA线程写的一个UDP简易通讯程序(三)
2017-05-23 14:58
519 查看
好记性不如赖笔头…………
启动代码 1
启动二
服务器代码 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(); } }
相关文章推荐
- 使用JAVA写的一个简易TCP通讯程序(一)
- 使用JAVA写的一个简易通讯程序(一)
- 使用Java编写一个简易的本地文件的检索相关字的程序
- 一个使用多线程删除指定目录及子目录下所有指定文件的Java程序(源码)
- 如何使用myeclipe编一个java程序[转]
- 在启动脚本中一般使用类似如下的命令执行一个Java程序
- 使用winsock+UDP写的一个简单接收端程序
- 一个简易的UDP Proxy程序zz
- Java中有几种方法实现一个线程,用什么关键字修饰同步方法?stop()和suspend()方法为何不提倡使用?
- Java Udp通讯程序
- java基础问题---java中有几种方法可以实现一个线程?用什么关键字修饰同步方法? stop()和suspend()方法为何不推荐使用
- 一个使用JAVA编写的类似按键精灵的程序,支持脚本文件编写(含源代码)
- 一个使用JAVA编写的类似按键精灵的程序,支持脚本文件编写(含源代码)
- 使用UDP协议的JAVA网络聊天程序
- 一个使用Java读取串口的程序
- 一个使用JAVA编写的类似按键精灵的程序,支持脚本文件编写(含源代码)
- 使用.bat文件运行Java程序的一个示例
- 一个方法最多2个线程同时使用的JAVA实现
- 使用winsock+UDP写的一个简单发送端程序
- 一个简易的UDP Proxy程序