黑马程序员技术交流社区
标题:
黑马程序员-Java基础-UDP网络传输协议-聊天室
[打印本页]
作者:
QQheima
时间:
2015-6-13 22:46
标题:
黑马程序员-Java基础-UDP网络传输协议-聊天室
UDP传输协议的特点
1、面向无连接
2、非安全传输协议
3、数据包大小必须在64K以内
4、传输速度快
以下给出网络聊天室的代码
发送端:
/**
* 需求:通过UDP传输协议方式,将一段文字数据发送出去。
* 思路:
* 1、建立udpsocket服务。
* 2、提供数据,并将数据封装到数据包中。
* 3、通过socket服务的发送功能,将数据包发送出去。
* 4、关闭资源。
* @param args
*/
import java.net.*;
import java.io.*;
class UdpSend{
public static void main(String[] args) throws Exception {
//1、建立UDP服务
DatagramSocket dgs = new DatagramSocket(8888);
//2、提供数据源,并打包封装
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String line = null;
while((line=br.readLine())!=null){
byte[] buf = line.getBytes();
DatagramPacket dgp = new DatagramPacket(buf,buf.length,InetAddress.getByName("192.168.23.255"),10000);
//发送数据
dgs.send(dgp);
}
//关闭资源
br.close();
dgs.close();
}
}
复制代码
接收端:
/**
* 需求:
* 定义一个应用程序,用于接受UDP协议传输来的数据并处理。
*
* 思路:
* 1、定义UdpSocket服务
* 2、定义一个数据包,用来存储接收到的字节数据
* 因为数据包对象中有更多功能,可以提取字节数据中的不同数据信息。
* 3、通过socket服务receive方法将收到的数据存入已定义好的数据包中
* 4、通过数据包对象的特有功能,将这些不同的数据取出,打印在控制台上。
* 5、关闭资源连接
* @author Administrator
*
*/
import java.net.*;
import java.io.*;
public class UdpReceived{
public static void main(String[] args)throws Exception{
//1、建立UDP服务,创建socket对象
DatagramSocket dgs = new DatagramSocket(10000);
//2、创建字符数组,用于存储接收的数据
byte[] buf = new byte[1024];
DatagramPacket dgp = new DatagramPacket(buf,buf.length);
while(true){
//3、通过socket服务获取数据
dgs.receive(dgp);
//4、通过数据包获取数据
String addr = dgp.getAddress().getHostAddress();
int port = dgp.getPort();
String con = new String(dgp.getData(),0,dgp.getLength());
//String con = new String(buf,0,dgp.getLength());
//5、打印数据,关闭资源
System.out.println(addr+":"+port+"----"+con);
}
}
}
复制代码
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2