黑马程序员- UDP协议编写聊天程序

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

 

黑马程序员-UDP协议编写聊天程序

/*编写一个聊天程序

 * 使用到UDP协议

 * 有接收和发送数据部分

 *能够同时接收和发送数据

 *使用到多线程技术

 *实现一条线程接收,一条线程发送。

 *

 * */

 

 

import java.io.*;

import java.net.*;

 

class Send implements Runnable

{

private DatagramSocket ds;

public Send(DatagramSocket ds)

{

this.ds=ds;

}

public void run()

{

try

{

//创建流缓冲区,获取键盘输入

BufferedReader bufr= new BufferedReader(new InputStreamReader(System.in));

String line=null;

//将输入内容存到line中

while((line=bufr.readLine())!=null)

{

//判断结束

if("886".equals(line))

break;

//将键盘获取到的内容存到数组中

byte[] buf=line.getBytes();

InetAddress i=InetAddress.getByName("192.168.1.102");

//在构造方法中指定数组,数组长度,ip地址以及端口

DatagramPacket dp=new DatagramPacket(buf,buf.length,i,10002);

//将数据写入到网络流中

ds.send(dp);

 

}

}

catch(Exception e)

{

throw new RuntimeException("失败");

}

}

}

class Rece implements Runnable

{

private DatagramSocket ds;

public Rece(DatagramSocket ds)

{

this.ds=ds;

}

public void run()

{

try

{

//因接收端一直处于开启状态,所以用true

while(true)

{

//创建数组

byte[] buf=new byte[1024];

 

DatagramPacket dp=new DatagramPacket(buf,buf.length);

//接收数据,该方法为阻塞式方法

ds.receive(dp);

//获取数据地址

String ip=dp.getAddress().getHostAddress();

//转换操作

String data=new String(dp.getData());

//打印地址和数据

System.out.println(ip+"::"+data);

}

}

catch(Exception e)

{

throw new RuntimeException("失败");

}

}

}

 

class NET2

{

public static void main(String[] args) throws Exception

{

//创建服务

DatagramSocket sendsocket=new DatagramSocket();

DatagramSocket recesocket=new DatagramSocket(10002);

//开启线程

new Thread(new Send(sendsocket)).start();

new Thread(new Rece(recesocket)).start();

//下面两句用于获取本机名和本机地址

//InetAddress i=InetAddress.getLocalHost();

//System.out.println(i.toString());

}

}


 

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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值