基于SOCKET的JAVA网络通信程序

上传人:痛*** 文档编号:46350725 上传时间:2021-12-12 格式:DOC 页数:11 大小:53.01KB
返回 下载 相关 举报
基于SOCKET的JAVA网络通信程序_第1页
第1页 / 共11页
基于SOCKET的JAVA网络通信程序_第2页
第2页 / 共11页
基于SOCKET的JAVA网络通信程序_第3页
第3页 / 共11页
点击查看更多>>
资源描述
基于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(127.0.0.1, 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开发基于C/S模式的JAVA聊天小程序,主要采用TCP连接方式建立客户端与服务器端的连接,支持多个客户端,支持发送服务器端的系统消息,服务器端采用多线程方式监听用户的连接,接收客户端的聊天信息并转发聊天信息到其他客户端。基于这个程序的实现,可以很容易的把它变为一个局域网内相互转发消息和文件的助手,使其具有一定的实用价值。参考文献:1 美Rogers Cadenhead. Java编程入门经典 人民邮电出版社,20072 美Bruce Eckel. Thinking In Java 英文第4版 机械工业出版社,20073
展开阅读全文
相关资源
相关搜索

最新文档


当前位置:首页 > 办公文档


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!