---------------------- 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的图形界面,实现图形化的多对多的通信就很简单了!
详细请查看:http://edu.csdn.net/heima