A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

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;

/**
* 用多线程来实现聊天
*
* 写两个类,一个是发送(sendSocket),一个是接收(receiveSocket)
* 两个类都集成Runnable,然后都在run方法中重写实现的方法
* 然后两个线程交替执行,实现了同时进行聊天和接收信息功能
* @author user
*
*/
public class Demo {
        public static void main(String[] args) throws SocketException {
                DatagramSocket dendSocket = new DatagramSocket(8888);
                DatagramSocket receiveSocket = new DatagramSocket(10000);
                sendSocket send = new sendSocket(dendSocket);
                receviceSocket receive = new receviceSocket(receiveSocket);
               
                Thread t1 = new Thread(send);
                Thread t2 = new Thread(receive);
               
                t1.start();
                t2.start();
        }
}
/**
* 发送端程序
* @author user
*
*/
class sendSocket implements Runnable{
        private DatagramSocket ds;
        public sendSocket(DatagramSocket ds){
                this.ds = ds;
        }
        @Override
        public void run() {
                try {
                        while(true){
                                BufferedReader bis = new BufferedReader(new InputStreamReader(System.in,"utf-8"));
                                String line = bis.readLine();
//                                System.out.println("ddd:"+bis.);
                                byte[] buf = line.getBytes("utf-8");
                               
                                DatagramPacket dp = new DatagramPacket(buf,0,buf.length,InetAddress.getByAddress(new byte[]{127,0,0,1}),10000);
                               
                                ds.send(dp);
                        }
                } catch (IOException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                }finally{
                        ds.close();
                }
               
        }
       
}
/**
* 接收端程序
* @author user
*
*/
class receviceSocket implements Runnable{
        private DatagramSocket ds;
        public receviceSocket(DatagramSocket ds){
                this.ds = ds;
        }
        @Override
        public void run() {
                try{
                        while(true){
                                byte[] buf = new byte[1024];
                               
                                DatagramPacket dp = new DatagramPacket(buf, buf.length);
                               
                                ds.receive(dp);
                               
                                String str = new String(dp.getData(),0,dp.getLength(),"utf-8");
                                System.out.println(str);
                        }
                }catch(Exception e){
                        e.printStackTrace();
                }finally{
                        ds.close();
                }
               
        }
       
}

4 个回复

倒序浏览
楼主好厉害!
回复 使用道具 举报
静丶 来自手机 中级黑马 2014-6-24 00:50:36
藤椅
学习了~
回复 使用道具 举报
学习了.
回复 使用道具 举报
哦 还没到到这看来得加紧了
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马