JAVA实现网络通信程序

来源 :电脑知识与技术·学术交流 | 被引量 : 0次 | 上传用户:wuang810
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
  摘要:java.net中包含了网络通信所需要的类,文中主要阐述了使用JAVA编程语言对基于客户/服务器模式的应用编写网络通信程序,讨论了SOCKET机制的原理,重点介绍Java中输入输出流的概念以及程序实现代码。
  关键词:JAVA;网络;SOCKET;APPLET
  中图法分类号:TP311文献标识码:A文章编号:1009-3044(2008)08-10ppp-0c
  
  网络上的系统结构多为客户/服务器模式,服务器端负责数据和图像等的存储、维护、管理以及传递,客户端则负责人机界面的操作、送出需求及显示收回的数据。
  
  1 Java中输入/输出流概念:
  
  Java语言的优点主要表现在:简单、面向对象、多线程、分布性、体系结构中立、安全性等方面。主要体现在Java实现了自动的垃圾收集,简化了内存管理的工作;提供了简单的类机制和动态的构架模型;多线程使应用程序可以同时进行不同的操作,处理不同的事件;是一种面向网络的语言,Java程序能在网络的任何地方运行,且可防止病毒的入侵。
  过滤流DataInputStream 和DataOutputStream 除了分别作为FilterInputStream和FilterOutputStream的子类外,还分别实现了接口DataInput 和DataOutput。接口DataInput中定义的方法主要包括从流中读取基本类型的数据、读取一行数据、或者读取指定长度的字节数,如readBoolean()、readInt()、readLine()、等。接口DataOutput中定义的方法主要是向流中写入基本类型的数据或者写入一定长度的字节数组,如writeChar()、writeDouble()、DataInputStream可以从所连接的输入流中读取与机器无关的基本类型数据,用以实现一种独立于具体平台的输入方式;DataInputStream可以向所连接的输出流写入基本类型的数据。
  
  2 Socket机制
  
  Socket是面向客户/服务器模型设计的,网络上的两个程序通过一个双向的通讯连接实现数据的交换,这个双向链路的一端称为一个Socket。Socket通常用来实现客户方和服务方的连接。客户程序可以向Socket写请求,服务器将处理此请求,然后通过Socket将结果返回给用户。Socket通信机制提供了两种通讯方式:有联接和无联接方式,分别面向不同的应用需求。
  
  3 客户机/服务器通信的实现:
  
  两端通过Socket机制进行连接来实现Application 同 Applet 的通信:正是由于Java系统具有基于Socket的灵活通信机制,因而其应用程序能自由地打开和访问网络上的对象,就象在本地文件系统中一样。才能实现Applet之间的通信: Applet之间的通信使用Applet Context类的getApplet()方法。<applet code=applet1.class width=200 height=200 name=first>只要在程序中加入Applet oneapplet=getAppletContext().getApplet(“first”);便可使用name为first的Applet中的方法了。
  程序如下: import java.io.*; import java.net.*; import java.lang.*; import T2;
  class ThreadEchoHandler extends Thread //创建线程
  { T2 theT2=new T2();Socket incoming; int counter;
  ThreadEchoHandler(Socket i,int c) { incoming=i; counter=c; }
  public void run()
  {try {DataInputStream in=new DataInputStream(incoming.getInputStream());
  DataOutputStream out=new ; DataOutputStream(incoming.getOutputStream());
  System.out.println ("hello"); boolean done=false;
  while(!done) { String aa=""; String str=in.readUTF();System.out.println (str);
  theT2.pass(str); theT2.tongji();aa=theT2.guan();
  System.out.println ("string z is:" aa);
  if(aa.compareTo("null")!=0 )
  { out.writeUTF(aa); out.flush();}} incoming.close();}
  catch(IOException e){System.out.println(e);}}}
  class S { public static void main(String[] args)
  { int i=1; ry { ServerSocket s=new ServerSocket(1111); for(;;)
  { Socket incoming=s.accept();System.out.println("connect: " i);
  new ThreadEchoHandler(incoming,i).start(); i ; }}
  catch(Exception e) { System.out.println(e); } }}
  import java.io.*; import java.net.*; import java.awt.*; import java.applet.*;
  public class Echo extends Applet
  { TextArea ta; Socket echoSocket; DataOutputStream os;
  DataInputStream is; String Line; public void init()
  { setBackground(Color.white); ta=new TextArea(5,80); ta.setEditable(false); add(ta);
  try {echoSocket=new Socket("10.102.4.41",1111);} //与服务器建立连接
  catch(IOException e) {System.out.println("error"); }}
  public void st(String stri) { try { DataOutputStream os=new
  DataOutputStream(echoSocket.getOutputStream());
  DataInputStream is=new DataInputStream(echoSocket.getInputStream());
  os.writeUTF("" stri ); os.flush();}//向服务器输送string
  catch(IOException e) {System.out.println(" error:" e); }}
  public String st1() //接收字符串的方法
  {String Line=""; try { DataOutputStream os=new
  DataOutputStream(echoSocket.getOutputStream());
  DataInputStream is=new DataInputStream(echoSocket.getInputStream());
  Line=is.readUTF();ta.appendText("" Line); }
  catch(IOException e) {System.out.println(" error:" e); } return Line; }}
  
  4 结束语
  
  用JAVA实现网络通信程序 时,在建立Socket连接时,两端的端口号必须设为一致,否则建立不了连接。服务器端必须有主机IP地址或主机名参数。连接建立好之后应确定输入和输出流,如果一个使用某端口的程序没有关闭,另一个程序就不能使用这个端口。
  
  参考文献:
  [1]廖雷,等.Java程序设计教程[M].中国电力出版社,2003.
  [2]徐迎晓.Java语法及网络应用设计[M].清华大学出版社,2002.
  [3]谢志华.深入Java Servlet网络编程[M].西安:西安电子科技大学出版社,2001.
其他文献
摘要:该文介绍了RFID技术在载货车辆称重系统中的应用,并对RFID在这个系统中数据安全问题进行详尽的分析同时给出了认为比较合理的安全策略。  关键词:RFID;安全;假名标签;Key值更新随机Hash锁  中图分类号:TP391文献标识码:A文章编号:1009-3044(2008)34-1755-03  Weight Automation Management System Combining
摘要:Sobel算子是图像边缘检测中常用的方法之一,利用像素的左、右、上、下邻域的灰度加权算法,根据在边缘点处达到极值这一原理进行边缘检测。该方法不但产生较好的检测效果,而且对噪声具有平滑作用,可以提供较为精确的边缘方向信息。本文提供了利用Sobel算子实现灰度图像边缘检测的C 源程序。  关键词:边缘检测;Sobel算子;梯度;噪声  中图分类号:TP183文献标识码:A文章编号:1009-3
摘要:在VB中变量的数据类型有很多种类,如字符型串型、数值型、日期型、布尔型等。还有一种特殊类型:可变类型(Variant)。定义了一个可变类型变量后,该变量可以存放任何类型的数据(数值、字符、日期等),这样在给变量赋值时就不用对数据进行转换了,VB系统会根据赋給变量的值的不同自动进行数据类型的转换。  关键词:变量;数据类型;可变类型;程序设计  中图分类号:TP311文献标识码:A文章编号:1
摘要:信息技术与通讯技术的发展为微格教学系统奠定了基础并且提供了新的契机,本文对微格教学系统先进行分析,介绍了微格教学系统走向数字化和网络化的优势,并对基于网络的数字微格教学系统加以设计并实现。  关键词:微格教学;数字微格;网络  中图分类号:TP393文献标识码:A文章编号:1009-3044(2008)21-30474-03    Design of Microteaching Enviro
摘要:随着多媒体教育技术飞速发展,教学过程中多媒体技术得到了广泛的应用,本文针对多媒体技术在AutoCAD教学应用中存在的问题进行了分析,通过说明多媒体技术的优点,结合传统的教学方法,不仅可以提高教学质量,还能促进学生的学习兴趣。最后针对存在的问题提出了一些科学的应用多媒体的方式和方法。  关键词:多媒体;课件;教学方式  中图分类号:TP391文献标识码:A文章编号:1009-3044(2008
摘要:Access2003软件具有强大的数据库管理功能,同时又具有操作简单,易于学习和使用的优点,十分适合医院的基层人员在管理医疗械是使用。  关键词:Access;医疗器械管理  中图分类号:R197文献标识码:B文章编号:1009-3044(2008)22-835-02  Microsoft Access2003 (以下简称Access)是Office2003的一个套装程序,普遍装于近年出售的
摘要:随着社会主义新农村建设的不断深入,农村人民生活水平的不断提高,新农村的规划和管理也相应的提高到一个新的层次。运用现代技术手段提高新农村发展规划水平和建设的可视化效果,本文结合适普公司IMAGIS软件,对新农村建设的三维场景问题进行讨论,并且根据三维地理信息系统的原理和方法来建立农村的三维模型场景,给出了系统空间数据和属性数据的管理方法。  关键词:IMAGIS;三维地理信息系统;三维建模;高
摘要:对基于IE内核(如IE,Maxthon)与基于Gecko内核(如Firefox)的浏览器的网页内容获取与分析的技术进行了研究,采用Visual C 6.0为平台,基于COM技术和微软的MSAA技术,采用了多种方式实现了基于以上两类不同内核的浏览器的网页内容获取,并对这几种获取方式进行了优劣比较。  关键词:COM; DOM; MSAA; IE; Gecko; windows编程  中图分
摘要:Bash与tcsh是目前Unix/Linux操作系统中两种流行的shell。通过举例,对这两种shell常用的功能和特性进行了对比,内容包括变量赋值、数组、环境设置、命令参数、数值计算、条件流程控制、循环语句和信号处理等。这些比较是对这二者主要区别的一个很好的总结,能够为bash与tcsh的学习和使用者提供便利和帮助。  关键词:Unix;Linux;Bash;Tcsh  中图分类号:TP3
(连云港市建筑设计研究院 中心机房,连云港 222000)  摘要:本文介绍了打印机工作语言PCL及PS,简要地对PCL和与PS进行了技术分析,重点阐述了这两中语言的区别和应用环境。  关键词:PCL;PS;PCL及PS的区别和应用  中图分类号:TP311文献标识码:A文章编号:1009-3044(2008)06-1pppp-0c    Analyse Printer Language PCL