快速业务通道

Java编程那些事儿106——网络编程技术5 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-07-04
ength();    System.out.println("客户端IP:" + clientIP.getHostAddress());    System.out.println("客户端端口:" + clientPort);    System.out.println("客户端发送内容:" + new String(data,0,len));    //发送反馈    String response = "OK";    byte[] bData = response.getBytes();    sendDp = new DatagramPacket(bData,bData.length,clientIP,clientPort);    //发送    ds.send(sendDp);   }catch(Exception e){     e.printStackTrace();   }finally{     try{       //关闭连接       ds.close();     }catch(Exception e){}   }  } }

在该服务器端实现中,首先监听10010号端口,和TCP方式的网络编程类似,服务器端的receive方法是阻塞方法,如果客户端不发送数据,则程序会在该方法处阻塞。当客户端发送数据到达服务器端时,则接收客户端发送过来的数据,然后将客户端发送的数据内容读取出来,并在服务器端程序中打印客户端的相关信息,从客户端发送过来的数据包中可以读取出客户端的IP以及客户端端口号,将反馈数据字符串“OK”发送给客户端,最后关闭服务器端连接,释放占用的系统资源,完成程序功能示例。

和前面TCP方式中的网络编程类似,这个示例也仅仅是网络编程的功能示例,也存在前面介绍的客户端无法进行多次数据交换,以及服务器端不支持多个客户端的问题,这两个问题也需要对于代码进行处理才可以很方便的进行解决。

在解决该问题以前,需要特别指出的是UDP方式的网络编程由于不建立虚拟的连接,所以在实际使用时和TCP方式存在很多的不同,最大的一个不同就是“无状态”。该特点指每次服务器端都收到信息,但是这些信息和连接无关,换句话说,也就是服务器端只是从信息是无法识别出是谁发送的,这样就要求发送信息时的内容需要多一些,这个在后续的示例中可以看到。

Java编程那些事儿106——网络编程技术5(3)

时间:2010-03-20 csdn 陈跃峰

下面是实现客户端多次发送以及服务器端支持多个数据包同时处理的程序结构,实现的原理和TCP方式类似,在客户端将数据的发送和接收放入循环中,而服务器端则将接收到的每个数据包启动一个专门的线程进行处理。实现的代码如下:

package udp; import java.net.*; import java.util.*; /** * 简单的UDP客户端,实现向服务器端发生系统时间功能 * 该程序发送3次数据到服务器端 */ public class MulUDPClient {  public static void main(String[] args) {   DatagramSocket ds = null;  //连接对象   DatagramPacket sendDp; //发送数据包对象   DatagramPacket receiveDp; //接收数据包对象   String serverHost = "127.0.0.1"; //服务器IP   int serverPort = 10012;  //服务器端口号   try{    //建立连接    ds = new DatagramSocket();    //初始化    InetAddress address = InetAddress.getByName(serverHost);    byte[] b = new byte[1024];    receiveDp = new DatagramPacket(b,b.length);    System.out.println("客户端准备完成");    //循环30次,每次间隔0.01秒    for(int i = 0;i < 30;i++){      //初始化发送数据      Date d = new Date(); //当前时间      String content = d.toString(); //转换为字符串      byte[] data = content.getBytes();      //初始化发送包对象      sendDp = new DatagramPacket(data,data.length,address, serverPort);      //发送      ds.send(se

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号