首页 > 代码库 > java scoket (UDP通信模型)简易聊天室
java scoket (UDP通信模型)简易聊天室
import java.net.DatagramPacket; import java.net.DatagramSocket; /** * 接收线程 * * @author xiaoduc * */ public class ReceiveThread extends Thread { private DatagramSocket ds; public ReceiveThread(int port) { super(); try { this.ds = new DatagramSocket(port); } catch (Exception e) { e.printStackTrace(); } } @Override public void run() { try { //创建byte数组 byte[] buff=new byte[1024]; //创建一个数据包对象 DatagramPacket dp=new DatagramPacket(buff, 1024); //永真循环 while(true){ ds.receive(dp);//接收消息 String str=new String(dp.getData(),0,dp.getLength());//得到数据 System.out.println("接收:"+str);//打印消息 } } catch (Exception e) { e.printStackTrace(); }finally { ds.close(); } } }
import java.io.BufferedReader; import java.io.InputStreamReader; import java.net.DatagramPacket; import java.net.DatagramSocket; import java.net.InetAddress; /** * 发送线程类 * @author xiaoduc * */ public class SendThread extends Thread{ private DatagramSocket ds; private int sendPort; public SendThread(int port,int sendPort){ super(); this.sendPort=sendPort; try { this.ds=new DatagramSocket(port); } catch (Exception e) { e.printStackTrace(); } } @Override public void run() { try { //循环接收用户输入 BufferedReader br=new BufferedReader(new InputStreamReader(System.in)); String str=null; while((str=br.readLine())!=null){ //创建Datagrampacket对象 DatagramPacket dp=new DatagramPacket(str.getBytes(), 0,str.length(),InetAddress.getByName("localhost"),sendPort); ds.send(dp);//发送数据 System.out.println("发送:"+str);//打印 } } catch (Exception e) { e.printStackTrace(); }finally { ds.close(); } } }
public class Chat { public static void main(String[] args) { //启动发送线程 new SendThread(1091, 1099).start(); } }
public class ReceiveChat { public static void main(String[] args) { //启动接收线程 new ReceiveThread(1099).start(); } }
java scoket (UDP通信模型)简易聊天室
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。