黑马程序员-UDP聊天程序

来源:互联网 发布:淘宝图片如何防盗 编辑:程序博客网 时间:2024/05/13 22:54


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


         昨晚看到了网络编程这一块!我以前培训过计算机网络CCNA,所以对网络的知识比较清晰。

用UDP实现聊天程序发送端的步骤可分为4步:

1、创建UDP服务,即创建DatagramSocket对象,并指定发送数据的端口。

2、提供数据,并将数据封装到数据包中。

3、通过Socket服务的发送功能,将数据包发出去。

4、关闭资源。

import java.net.*;
import java.io.*;
class Udpsend
{
public static void main(String[] args)  throws Exception
{
DatagramSocket ds = new DatagramSocket(1000);//创建udp服务,指定通过1000端口来发送数据
BufferedReader bufr = new BufferedReader(new InputStreamReader(System.in));//从键盘录入数据
String line = null;
while((line=bufr.readLine())!=null)//读取数据不为空,read方法也是阻塞式方法
{
if("886".equals(line))
break;
byte[] buf = line.getBytes();
DatagramPacket dp = new DatagramPacket(buf,buf.length,InetAddress.getByName("192.168.1.232"),3000);//指定接收端的接收端口为3000.封装数据包
ds.send(dp);//发送数据
}
ds.close();//关闭资源
}
}

用UDP实现聊天程序接收端的步骤可分为5步:

1、创建udpSocket服务,即创建DatagramSocket对象,并指定接收数据的端口。

2、定义一个数据包,因为要存储接收到直接数据(数据包对象中有更多功能可以提取字节数据源中的不同数据信息如IP,端扣号)。

3、通过Socket服务的receive方法,将接收到的数据存入已定义好的数据包中。

4、通过数据包对象的特有功能,将这些不同的数据取出,打印在控制台上。

5、关闭资源。


class Udprece
{
public static void main(String  [] args) throws Exception
{
DatagramSocket ds = new DatagramSocket(3000);//创建udp socket服务,建立端点
//定义数据包,用于存储数据
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(),0,dp.getLength());//通过数据包的方法获取其中的数据
int port= dp.getPort();
System.out.println(ip+"::"+data+"::"+port);
//ds.close();
}
}
}

         发送端和接收端的原理就是这样,聊天程序一般都是采用udp的传输协议,因为它不求稳定性,但求实时性,而udp正好符合这种需求,它的传输速率相比tcp快。可以解决实时性的问题。以上这个程序只是最简单的无界面的一对一的通信,只要再加上GUI的图形界面,实现图形化的多对多的通信就很简单了!



---------------------- android培训、java培训、期待与您交流! ----------------------
详细请查看:http://edu.csdn.net/heima