`
jiao13953900900
  • 浏览: 32599 次
  • 性别: Icon_minigender_1
社区版块
存档分类
最新评论

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

    博客分类:
  • java
阅读更多

---------------------- 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培训、期待与您交流! ----------------------

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics