网络编程-UDP程序聊天小程序

 1 package com.yyq;
 2 
 3 import java.io.BufferedReader;
 4 import java.io.InputStream;
 5 import java.io.InputStreamReader;
 6 import java.net.DatagramPacket;
 7 import java.net.DatagramSocket;
 8 import java.net.InetAddress;
 9 import java.net.SocketException;
10 
11 /*
12  * 编写一个聊天程序。有收数据的部分,有发送数据的部分,这两部分需要同时执行
13  * 那就需要用到多线程技术。一个线程收,一个线程发。
14  * 因为收和发动作是不一致的,所以
15  */
16 class Send implements Runnable{
17     private DatagramSocket ds;
18     public Send(DatagramSocket ds){
19         this.ds = ds;
20     }
21     public void run(){
22         try{
23             BufferedReader bufr = new BufferedReader(new InputStreamReader(System.in));
24             String line = null;
25             while((line = bufr.readLine())!=null){
26                 if("88".equals(line)){
27                     break;
28                 }
29                 else{
30                     byte[] buf = new byte[1024];
31                     DatagramPacket dp = new DatagramPacket(buf,buf.length,InetAddress.getLocalHost(),1237);
32                     ds.send(dp);
33                 }
34             }
35         }
36         catch(Exception e){
37             throw new RuntimeException("发送端失败!!");
38         }
39     }
40 }
41 class Rece implements Runnable{
42     private DatagramSocket ds;
43     public  Rece(DatagramSocket ds){
44         this.ds = ds;
45     }
46     public void run(){
47         try{
48             while(true){
49                 byte[] buf = new byte[1024];
50                 DatagramPacket dp = new DatagramPacket(buf,buf.length);
51                 ds.receive(dp);
52                 String ip = dp.getAddress().getHostAddress();
53                 String data = new String(dp.getData(),0,dp.getLength());
54                 System.out.println(ip+data);
55             }
56         }
57         catch(Exception e){
58             throw new RuntimeException("接受端失败!!");
59         }
60     }
61 }
62 public class ChatDemo {
63     public static void main(String[] args) throws SocketException {
64         DatagramSocket sendSocket = new DatagramSocket();
65         DatagramSocket receSocket = new DatagramSocket(1237);
66         new Thread(new Rece(sendSocket)).start();
67         new Thread(new Send(sendSocket)).start();
68     }
69 }

 

posted @ 2016-01-19 18:38  HuberyQian  阅读(361)  评论(0编辑  收藏  举报