博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
java scoket (UDP通信模型)简易聊天室
阅读量:6901 次
发布时间:2019-06-27

本文共 2346 字,大约阅读时间需要 7 分钟。

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();    }}

 

 

转载于:https://www.cnblogs.com/xiaoduc-org/p/5968921.html

你可能感兴趣的文章
style
查看>>
Log4j配置详解
查看>>
myql 查询树形表结果:说说、说说的述评、评论的回复
查看>>
java基础讲解02-----eclipse快捷方式(2017-04-12 23:47)
查看>>
Eclipse使用Tomcat发布项目时出现YadisException异常解决方案
查看>>
How to do Mathematics
查看>>
[洛谷P4245]【模板】任意模数NTT
查看>>
iOS开发-面试总结(十六)
查看>>
[LeetCode] Unique Binary Search Trees II dfs 深度搜索
查看>>
升级Mac OS X上的git
查看>>
python基础2(数据类型、数据运算、for循环、while循环、列表)
查看>>
应用被强杀了怎么办
查看>>
jquery validate 插件使用心得
查看>>
Windows下安装mysql后,不知道root密码,如果修改root密码
查看>>
Linuxドライバ_LDD3メモ_ハードウェアとの通信
查看>>
数学之美系列四 -- 怎样度量信息?
查看>>
用Access+SharePoint 来收集数据
查看>>
Nginx 的 Location 配置指令块
查看>>
Spark小课堂Week5 Scala初探
查看>>
go练习1-翻转字符串
查看>>