基于SOCKET的JAVA网络通信程序 (2).doc_第1页
基于SOCKET的JAVA网络通信程序 (2).doc_第2页
基于SOCKET的JAVA网络通信程序 (2).doc_第3页
基于SOCKET的JAVA网络通信程序 (2).doc_第4页
基于SOCKET的JAVA网络通信程序 (2).doc_第5页
已阅读5页,还剩6页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

基于socket的java网络通信程序摘要: 本文阐述了java技术的优势和socket的通信机制,并讨论了使用eclipse实现基于socket的网络通信程序的程序。关键词: java,网络,socketabstract: this article describes the advantages of java technology, discussed the use of eclipse to achieve network communications program based socket technologykeyword:java,network,socket一、 java语言随着微软推广.net技术力度的加大,java技术被一部分没有真正接触和使用它的人所误解,他们可能认为.net技术是java技术的升级,现在学习编程要学习.net。那么学习java编程,到底是不是一个明智的选择呢?带着这些疑问,让我们看一下java语言的优势:(1) 免费sun免费提供用来开发java应用程序的一切,你不必付任何的版税。与java本身相比,java api更是可贵的免费财富。想使用socket操作网络?api中有;想连接到sql数据库?api中有;想给应用程序一个漂亮的用户界面?api中有;想要处理数字图形、播放音乐、解析字符串或者创建数字签名?api中全都有(2) 跨平台一次编写,随处运行,java系统可以运行在不同的操作系统和硬件上。随着linux的持续增长以及mac osx完全支持java技术,跨平台的特性变得越来越有分量。由于java跨平台,java api自然也是平台统一的。对程序员而言,没有比统一的api函数能够让他们更欣慰的了-已经有了圆形的轮子,何必再从头发明轮子呢?我们拿java api与c+的类库相比便可以知道它的可贵之处。有windows编程经验的c+程序员肯定经历过被mfc(microsoft foundation classes,微软基类库)折磨的日子,学习曲线陡峭,没有若干个月根本无法开始生产,一段时间不接触遗忘率又高。据说,即使在微软公司内部,除了 mfc开发小组,谁都不乐意用它。即便你熟悉了mfc,能够顺利开发windows应用程序,如果你要编写一个linux应用程序,mfc又派不上用场 了,你必须学习linux下c+开发的一套库函数。还有unix、freebsd、mac os.你学得过来吗?反观java api,操作系统,你爱谁是谁,只要编写一次便可随处运行!(3) 简单与c+等语言相比较,语法上java是简单的。在java中,要写出低劣的代码也不是一件容易的事情。一方面,垃圾回收机制堵住了内存泄漏的可能性,另一方面就是异常捕捉机制,它强迫你做最坏的打算。编写程序时,难免会遇到一些意外,比如文件无法打开、网络读取失败等特殊情况。在c+等语言中是依靠返回值来判断的,如果一句句地检查返回值,那实在是太麻烦了。从而,程序员习惯性地忽略返回值的检查,并安慰自己一切都会好起来的。这便埋下了隐患。在java中,java的方法可以抛异常,而你必须应答异常,即使你不想进行任何操作。比如编写打开文件的代码,你不得不响应异常以防意外发生,否则程序根本不能够通过编译。未雨绸缪,使得java系统更稳健。(4) 企业应用的成熟平台java技术的企业应用旨在提升企业竞争力,所以java技术受到了企业的欣赏,市场份额是同类技术中最大的。同时,java开放标准,所以供应商众多。市面上有许多的应用服务器、工具与构件可以选择,从高端的bea weblogic、ibm websphere等商业软件, 到tomcat、jboss等开源的免费工具,一应俱全。作为java技术的初学者,不需要任何花费就能够进行java企业应用的自我培训,以后若参与 java的商业项目开发,便可以无缝地把软件移植到高端的商业平台上去。反观.net,想免费自学,不盗版是不可能的啦。(5) 开源组织或者非盈利机构的支持开源组织是无政府主义的梦想-没有政体,没有所属权,言论与行动自由,仅仅依靠渴望共享与交流的信仰及无私奉献来维系。java世界中,开源组织与非盈利机构发挥到了极致,许多出色的工具都出自它们之手。比如junit、 cactus、tomcat、struts、jboss、eclipse、ant、xerces、hibernate、axis、aspectj等等,许多工具还会出现在我们的咖啡馆中,扮演重要的角色。二、 socket 机制所谓socket通常也称作套接字,用于描述ip地址和端口,是一个通信链的句柄。应用程序通常通过套接字向网络发出请求或者应答网络请求。socket和serversocket类库位于包中。serversocket用于服务器端,socket是建立网络连接时使用的。在连接成功时,应用程序两端都会产生一个socket实例,操作这个实例,完成所需的会话。对于一个网络连接来说,套接字是平等的,并没有差别,不因为在服务器端或在客户端而产生不同级别。三、 java工具eclipse最初是由ibm公司开发的替代商业软件visual age for java的下一代ide开发环境,2001年11月贡献给开源社区,现在它由非营利软件供应商联盟eclipse基金会(eclipse foundation)管理。eclipse 是开放源代码的软件。这意味着eclipse不仅可以免费使用,还可以通过研究源代码学习世界上顶尖开发人员的编程技术,并可以共享遍布全球的开发人员所贡献的公共开放源代码库。eclipse美轮美奂的人机界面受到广泛赞誉。eclipse提供了全新的swt/jface api(而不是awt/swing),一改swt/swing单调、沉闷的界面风格,使得开发基于本地的具有丰富图形界面的应用程序成为可能,犹如一股春风吹进java的桌面开发领域,给人耳目一新的感觉。eclipse凭借其灵活的扩展能力、优良的性能与插件技术,受到了越来越多开发者的喜爱。四、基于socket的网络通信程序/服务器端程序chatserver.java 负责与客户端通信import java.io.*;import .*;import java.util.*;public class chatserver boolean started = false;serversocket ss = null;list clients = new arraylist();public static void main(string args) new chatserver().start();public void start() try ss = new serversocket(8888);started = true; catch (bindexception e) system.out.println(端口使用中.);system.out.println(请关掉相关程序并重新运行服务器!);system.exit(0); catch (ioexception e) try while(started) socket s = ss.accept();client c = new client(s);new thread(c).start();clients.add(c); catch (ioexception e) finally try ss.close(); catch (ioexception e) class client implements runnable private socket s;private datainputstream dis = null;private dataoutputstream dos = null;private boolean bconnected = false;public client(socket s) this.s = s;try dis = new datainputstream(s.getinputstream();dos = new dataoutputstream(s.getoutputstream();bconnected = true; catch (ioexception e) public void send(string str) try dos.writeutf(str); catch (ioexception e) public void run() try while(bconnected) string str = dis.readutf();for(int i=0; iclients.size(); i+) client c = clients.get(i);c.send(str); catch (eofexception e) system.out.println(client closed!); catch (ioexception e) e.printstacktrace(); finally try if(dis != null) dis.close();if(dos != null) dos.close();if(s != null) s.close(); catch (ioexception e1) /客户端通信小应用程序chatclient.javaimport java.awt.*;import java.awt.event.*;import java.io.*;import .*;public class chatclient extends frame socket s = null;dataoutputstream dos = null;datainputstream dis = null;private boolean bconnected = false;textfield tftxt = new textfield();textarea tacontent = new textarea();thread trecv = new thread(new recvthread();public static void main(string args) new chatclient().launchframe();public void launchframe() setlocation(400, 300);this.setsize(300, 300);add(tftxt, borderlayout.south);add(tacontent, borderlayout.north);pack();this.addwindowlistener(new windowadapter() public void windowclosing(windowevent arg0) disconnect();system.exit(0););tftxt.addactionlistener(new tflistener();setvisible(true);connect();trecv.start();public void connect() try s = new socket(, 8888);dos = new dataoutputstream(s.getoutputstream();dis = new datainputstream(s.getinputstream();bconnected = true; catch (unknownhostexception e) e.printstacktrace(); catch (ioexception e) e.printstacktrace();public void disconnect() try dos.close();dis.close();s.close(); catch (ioexception e) private class tflistener implements actionlistener public void actionperformed(actionevent e) string str = tftxt.gettext().trim();tftxt.settext();try dos.writeutf(str);dos.flush(); catch (ioexception e1) private class recvthread implements runnable public void run() try while(bconnected) string str = dis.readutf();tacontent.settext(tacontent.gettext() + str + n); catch (ioexception e) 五、小结以上是使用eclips开

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论