快速业务通道

使用Java实现数据报通讯过程 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-22
.64.4"),5000);//发送数据报,其中你可以用你自己的主机IP替换器中的IP地址       sendSocket.send(sendPacket);      }catch(IOException ioe)      {       textarea.appendText("网络通讯出现错误,问题在"+ioe.toString());      }     return true;    }    }

使用Java实现数据报通讯过程(3)

时间:2010-12-25

二、服务器端应用程序的工作流程

不同于基于数据流通讯方式,在数据报通讯中,通讯双方之间并不要建立连接,所以,服务器应用程序通讯过程与客户端应用程序的通讯过程使非常相似的,也要建立数据报通讯DatagramSocket,构建数据报文包DatagramPacket,接收数据报和发送数据报,处理接收缓冲区内的数据,通讯完毕后,关闭数据报通讯Socket。不同的是,服务器应用程序要面向网络中的所有计算机,所以服务器应用程序收到一个包文后要分析它,得到数据报的源地址信息,这样才能创建正确的返回结果报文给客户机。

下面我给出了一个数据报通讯的服务器段程序,由于服务器端的相应应用程序和客户端程序比较相似,所以我不想详细的注释,仅列出程序供大家参考:

1、javaCommunicationServer.java

import java.net.*;    import java.io.*;    import java.awt.*;    import java.applet.Applet;    public final class javaCommunicationServer extends Frame     {      private Label label1,label2 ;      private Panel panel1,panel2;      private TextField textfield;      private String name,name1;      private TextArea textarea;      private DatagramSocket sendSocket,receiveSocket;      private DatagramPacket sendPacket,receivePacket;    public javaChatServer()     {      super("通讯控制台:");//使用超类构造方法,构造一个Frame      panel1=new Panel();      panel1.setLayout(new BorderLayout());      label1=new Label("通话纪录");      textarea=new TextArea(10,20);      textarea.setText("欢迎您!");      panel1.add("North",label1);      panel1.add("Center",textarea);      add("North",panel1);      panel2=new Panel();      panel2.setLayout(new BorderLayout());      label2=new Label("发言:");      panel2.add("Center",label2);      textfield=new TextField(20);      panel2.add("South",textfield);      add("Center",panel2);      show();     try     {      sendSocket=new DatagramSocket();      receiveSocket= new DatagramSocket(5000);     }     catch (SocketException e)      {       e.printStackTrace();       System.exit(1);      }     }    public void waitForPacket()     {      while (true)     {     try      {       byte buf[]=new byte[100];       receivePacket=new DatagramPacket(buf,buf.length);       receiveSocket.receive(receivePacket);       name=receivePacket.getAddress().toString();       if(name1!=name)        {         textarea.appendText(" 来自主机:"+name+" 端口:"+receivePacket.getPort());        }       textarea.appendText(" 客户: &quo

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站: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号