黑马程序员_网络编程之聊天程序

来源:互联网 发布:淘宝模特招聘 编辑:程序博客网 时间:2024/05/17 23:15

------- android培训java培训、期待与您交流! ----------

聊天程序代码原理:

聊天程序是网络编程代码的核心部分,包括了全部的知识和概念。掌握了聊天程序就掌握了网路便成功。

package com.test.exam;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;

/**
 * 需求:建立聊天程序
 * @author 冯国强
 *
 */
public class Question1 {

 public static void main(String[] args) throws Exception {
  // TODO Auto-generated method stub
  //创建一个发送端 
        DatagramSocket ds1=new DatagramSocket(); 
        //创建一个接收端 
        DatagramSocket ds2=new DatagramSocket(10000); 
        //创建一个接收端线程并启动 
        new Thread(new send(ds1)).start(); 
        //创建一个接收端线程并启动 
        new Thread(new receive(ds2)).start();
 }

}
class send implements Runnable{

 private DatagramSocket ds; 
    public send(DatagramSocket ds){ 
         this.ds=ds; 
    } 
    public void run() { 
         BufferedReader br=null; 
         try{ 
         //创建一个键盘录入流 
         br=new BufferedReader(new InputStreamReader(System.in)); 
         //读取键盘录入数据并发送 
         String line=null; 
         while((line=br.readLine())!=null){ 
             //用读取数据创建发送数据包 
            byte[] buf=line.getBytes(); 
             DatagramPacket dp=new DatagramPacket(buf,buf.length,InetAddress.getByName("127.0.0.1"),10000); 
             //发送端发送数据 
             ds.send(dp); 
         } 
         }catch (Exception e) { 
             throw new RuntimeException("发送端失败");
         }finally{//释放资源 
             if(br!=null) 
                 try { 
                     br.close(); 
                } catch (IOException e) { 
                     e.printStackTrace(); 
                 } 
         } 
          
 } 

}
class receive implements Runnable{

 private DatagramSocket ds; 
    public receive(DatagramSocket ds){ 
         this.ds=ds; 
     } 
 public void run() { 
  try{ 
         while(true){ 
             //定义一个缓冲数组 
             byte[] buf=new byte[1024]; 
             //用缓冲数组创建一个接收数据包 
             DatagramPacket dp=new DatagramPacket(buf,buf.length); 
             //接受数据,并显示 
             ds.receive(dp);//receive是一个阻塞式方法 
             String ip=dp.getAddress().getHostAddress(); 
             String content=new String(dp.getData(),0,dp.getLength()); 
             System.out.println(ip+":"+content); 
         } 
  }catch (Exception e) { 
   throw new RuntimeException("接收端失败"); 
     } 
 }
}

0 0
原创粉丝点击