导航:首页 > 编程大全 > java网络通信编程教材

java网络通信编程教材

发布时间:2024-08-22 01:42:28

java缃戠粶缂栫▼搴旇ユ庢牱鍦ㄥ㈡埛绔鍜屾湇鍔″櫒闂村疄鐜伴氫俊锛

浠ュ墠鍐欑殑锛岀収璐翠簡銆傘傘傛湇鍔″櫒绔锛歩mport java.awt.*;x0dx0aimport java.awt.event.WindowAdapter;x0dx0aimport java.awt.event.WindowEvent;x0dx0aimport java.io.*;x0dx0aimport java.net.*;/*6銆 閲囩敤UDP鍗忚锛岀紪鍐欎竴涓狫ava缃戠粶搴旂敤绋嬪簭锛岃ュ簲鐢ㄥ垎鏈嶅姟鍣ㄧ绋嬪簭鍜屽㈡埛绔绋嬪簭涓ら儴鍒嗐俓x0dx0a* 瀹㈡埛绔鎸囧畾涓涓鏈嶅姟鍣ㄤ笂鐨勬枃浠跺悕锛岃╂湇鍔″櫒鍙戝洖璇ユ枃浠剁殑鍐呭癸紝鎴栬呮彁绀烘枃浠朵笉瀛樺湪銆俓x0dx0a* 锛20鍒嗭級锛堟湇鍔$绋嬪簭鍜屽㈡埛绔绋嬪簭鍒嗗埆鍛藉悕涓篠erver.java鍜孋lient.java锛*/x0dx0apublic class N4BT6 extends Framex0dx0a{x0dx0aDatagramSocket socket ;x0dx0aDatagramPacket packet ;byte[] buf ;x0dx0aFile file ;x0dx0aFileInputStream input;x0dx0aString message = "璇ユ枃浠朵笉瀛樺湪";x0dx0aTextArea text;x0dx0apublic N4BT6(String title)x0dx0a{x0dx0asuper(title);x0dx0atext = new TextArea(6,4);x0dx0aadd(text);x0dx0asetSize(400, 300);x0dx0asetVisible(true);x0dx0aaddWindowListener(new WindowAdapter()x0dx0a{x0dx0apublic void windowClosing(WindowEvent e)x0dx0a{x0dx0adispose();x0dx0a}x0dx0a});x0dx0ax0dx0abuf = new byte[1024];x0dx0atryx0dx0a{x0dx0asocket = new DatagramSocket(1230);x0dx0apacket = new DatagramPacket(buf, buf.length);x0dx0asocket.receive(packet);x0dx0afile = new File(new String(packet.getData()));x0dx0asocket = new DatagramSocket();x0dx0a} x0dx0acatch (Exception e)x0dx0a{e.printStackTrace();x0dx0a}x0dx0ax0dx0aif(file.exists())x0dx0a{x0dx0atryx0dx0a{x0dx0abuf = new byte[(int)file.length()];x0dx0apacket = new DatagramPacket(buf,buf.length,InetAddress.getLocalHost(),1234);x0dx0ainput = new FileInputStream(file);x0dx0ainput.read(buf);x0dx0asocket.send(packet);x0dx0a}x0dx0acatch (IOException e) x0dx0a{x0dx0ae.printStackTrace();x0dx0a}x0dx0a}x0dx0aelsex0dx0a{x0dx0atryx0dx0a{x0dx0apacket = new DatagramPacket(message.getBytes(),message.getBytes().length,x0dx0aInetAddress.getLocalHost(),1234);x0dx0asocket.send(packet);x0dx0a}x0dx0acatch (Exception e) x0dx0a{x0dx0ae.printStackTrace();x0dx0a}x0dx0a}x0dx0ax0dx0a}x0dx0apublic static void main(String[] args)x0dx0a{x0dx0anew N4BT6("Server");x0dx0a}x0dx0a}x0dx0a瀹㈡埛绔锛歩mport java.awt.*;x0dx0aimport java.awt.event.*;x0dx0aimport java.net.DatagramPacket;x0dx0aimport java.net.DatagramSocket;x0dx0aimport java.net.InetAddress;public class N4BT6_2 extends Framex0dx0a{x0dx0aTextArea text;x0dx0aString message = "Q.txt";x0dx0aDatagramSocket socket ;x0dx0aDatagramPacket packet;x0dx0abyte[] buf;x0dx0apublic N4BT6_2(String title)x0dx0a{x0dx0asuper(title);x0dx0atext = new TextArea(6,4);x0dx0aadd(text);x0dx0asetSize(400, 300);x0dx0asetVisible(true);x0dx0aaddWindowListener(new WindowAdapter()x0dx0a{x0dx0apublic void windowClosing(WindowEvent e)x0dx0a{x0dx0adispose();x0dx0a}x0dx0a});x0dx0atryx0dx0a{x0dx0ax0dx0asocket = new DatagramSocket();x0dx0apacket = new DatagramPacket(message.getBytes(),message.getBytes().length,x0dx0aInetAddress.getLocalHost(),1230);x0dx0asocket.send(packet);x0dx0a}x0dx0acatch (Exception e) x0dx0a{x0dx0ae.printStackTrace();x0dx0a}x0dx0ax0dx0atryx0dx0a{x0dx0abuf = new byte[1024];x0dx0asocket = new DatagramSocket(1234);x0dx0apacket = new DatagramPacket(buf,buf.length);x0dx0asocket.receive(packet);x0dx0atext.append(new String(buf));x0dx0a}x0dx0acatch (Exception e) x0dx0a{x0dx0ae.printStackTrace();x0dx0a}x0dx0a}x0dx0apublic static void main(String[] args)x0dx0a{x0dx0anew N4BT6_2("Client");x0dx0a}x0dx0a}

⑵ 求推荐JAVA入门书籍

1,《Head First Java》java入门书籍

《Head First Java》是本完整的面向对象(object-oriented,OO)程序设计和Java的学习指导。此书是根据学习理论所设计的,让你可以从学习程序语言的基础开始一直到包括线程、网络与分布式程序等项目。最重要的,你会学会如何像个面向对象开发者一样去思考。
《HeadFirstJava(中文版)(第2版)(涵盖Java5.0)》的图文并茂学习方式能让你快速地在脑海中掌握住知识。敞开心胸准备好学习这些关键性的主题:Java程序语言;面向对象程序开发;Swing图形化接口;使用JavaAPI函数库;编写、测试与部署应用程序;处理异常;多线程;网络程序设计;集合与泛型。
如果你想要看"一本正经"的书,去找其他的。如果你真地想要好好地学习Java,你会需要《Head First Java》。这本书可是Amazon编辑推荐的十大好书之一!强烈推荐学习此书,非常适合初学者入门。
2《Java从入门到精通》适合自学者
《Java从入门到精通》这本书主要针对java基础,对于没有学过java的人才说,是一个不错的选择。通过这本书,大家可以从零开始,慢慢来学习,而且实操很多,不会让你看到最后出现只会理论的情况。为什么说培训的人不用看呢?因为这本书上的内容和许多培训机构的书籍有很多重复的地方,所以参加培训的同学就可以不看了。如果觉得自学太难太慢的话,那就报培训机构吧.
3.《Thinking in java》(中文名:《Java编程思想》)适合中级自学者和培训者
《Java编程思想》可以说是最经典的java著作,是所有java程序员必备教科书。这本书不管是正在学习还是已经工作许多年的程序员,都可以从这本书中得到你想要的东西。这本书具有教材和工具书的作用,就像一本字典,想知道什么都可以从中查询。虽然这本书很好,但并不建议初学者学习,对于初学者难度较大。
4.《疯狂Java讲义》适合自学者看
《疯狂的讲义》这本书比较适合自学者,内容比较项目化,实操方法很多,如果你想进行java的深入学习,不妨看看这本书。
《疯狂Java讲义(第5版)》深入介绍了Java编程的相关方面,全书内容覆盖了Java的基本语法结构、Java的面向对象特征、Java集合框架体系、Java泛型、异常处理、Java GUI编程、JDBC数据库编程、Java注释、Java的IO流体系、Java多线程编程、Java网络通信编程和Java反射机制。覆盖了java.lang、java.util、java.text、http://java.io和java.nio、java.sql、java.awt、javax.swing包下绝大部分类和接口。本书重点介绍了Java的模块化系统,还详细介绍了Java 10、Java 11的使用var声明局部变量、在Lambda表达式中使用var声明变量、改进的javac命令、基于嵌套的访问控制、HTTP Client网络编程,以及Java 10、Java 11新增的各种API功能。
5.《Java核心技术》最适合报培训班的看
这本书分为两个部分,第一个部分讲的是基础知识,第二个部分讲的是高级特性。由于内容非常有层次,所以非常适合自学和上培训机构的同学学习。尤其对参加培训的同学作用较大,因为一般培训机构讲的非常快,有很多东西没办法及时消化吸收,很多基础和核心的东西就会掌握的不牢固,那么这本书正好弥补了这个缺失。
6.《Java开发实战经典》适合自学者看
该书是一本综合讲解Java核心技术的书籍,在书中使用大量的代码及案例进行知识点的分析与运用,并且给出一些比较成熟的开发步骤,帮助读者更好地进行Java的开发。
从作者多年的Java培训经验来看,大部分学生对各种高端开发都没有任何问题,唯一的问题在于Java基础并不牢固,而且在国内也始终没有一本真正可以引领读者入门的好书籍,大部分的书籍都是围绕概念本身进行讲解的,没有讲解清楚为什么要具备这些知识以及该如何去理解这些知识。本书真正地做到了让每一位读者都能清楚地知道每个知识点的来龙去脉,不仅可以很容易地看懂一个程序,而且能真正地灵活运用程序,编写代码。
在学习编程语言时,环境、代码调试等,都是很多读者最头疼的地方,而且很多代码都会存在一些细节上的问题,所以,本书为了让读者可以更好地理解每一个知识点,将书中所有内容都录制成了视频,让每一位读者真正做到"轻松学Java、从零开始学Java",以优质的视频教学为每一位读者提供最大的支持。
这本书比较适合自学者学习,里面有很多小案例,可以边学边练,巩固知识。

⑶ 零基础学习Java的书籍有哪些,请推荐

主要分三阶段来说:入门,进阶程序员,攻城狮思维,每个阶段推荐相关书籍:
java入门书籍推荐: 入门者最需要静下心来系统化的学习知识,但同时也有很多可能与Java本身无关但很重要的疑问。
Head First Java(中文版)(第2版)
head first系列的教材,看起来都特别轻松,图文并茂,简单易懂,适合初学者选择。缺点则是只介绍一些最基础最实用的东西 知识点不够丰富。
Java核心技术 第七版 卷Ⅰ(基础知识)
统全面讲解Java语言的核心概念、语法、重要特性和开发方法,包含大量案例,实践性强,第1章概述了Java语言与其他程序设计语言不同的性能。
Java开发实战经典
书中的代码和案例较多,知识点也比较全面,在实际开发的过程中来讲解一些基础内容,对于新手而言很实用。
Thinking In Java 4(完美高清中文版)
Think in java被誉为“java圣经”。无论你处于什么阶段,每一次阅读都能有所收获。也因此,对于新手而言,这本书毁誉参半,自行斟酌吧。
———————————华丽分割线————————-——————

程序员进阶篇:
这一阶段的Java学习者处于高速成长期,需要不断的获取项目经验、掌握更多开发知识。当然,最重要的还是为了成功拿到靠谱的offer。
《Effective Java中文版 第2版》
本书介绍了在java编程中78条极具实用价值的经验规则,每条规则都以简短、独立的小文章形式出现,并通过例子代码加以进一步说明,这些经验规则涵盖了大多数开发人员每天所面临的问题的解决方案。
Java并发编程实战(中文版)
深入浅出地介绍了Java线程和并发,是一本完美的Java并发参考手册。其中并非只讲述了Java的多线程设施,对一般的并发编程的rationale也有相当透彻的阐述 测试驱动开发 by Example 书中不仅以案例的形式呈现了测试驱动开发的原则和方法,而且详尽地阐述了测试驱动开发(TDD)的模式和最佳实践。本书从始至终贯穿了两个TDD项目,展示了如何轻而易举且卓有成效地编写优质代码的技术。
现在很多小伙伴喜欢在互联网上找视频资料学习网页制作,但是光看视频你是不可能学会网页制作的,没有人指导你,而且很多视频已经过时了 并没有什么用! 如果你真的想学习网页制作这门技术,你可以来这个群,前面是6 5 7 ,中间是1三7,最后是九O六, 在这里有最新的HTML课程 免费学习 也有很多人指导你 进步 不需要你付出什么 只要你有一颗学习的心就可以了 不是愿意学习或者自认不需要学习的就不要加了。
重构_改善既有代码的设计[高清版]
书中给出了70多个可行的重构,每个重构都介绍了一种经过验证的代码变换手法的动机和技术。本书提出的重构准则将帮助你一次一小步地修改你的代码,从而减少了开发过程中的风险。

——————————进阶攻城狮———————————- ——————

java攻城狮推荐学习书籍:
这一阶段的Java学习者已经渐入佳境,沉下心来研究技术点的同时,更多的是关于Java的思考。
企业应用架构模式(中文版)
作者将40多种经常出现的解决方案转化成模式,最终写成这本能够应用于任何一种企业应用平台的、关于解决方案的、不可或缺的手册。
敏捷开发-敏捷软件开发:原则、模式与实践(全)
好的技术书籍的标准是通俗易懂;文字精炼;耐读,有吸引力;有思想性。作者的书写功力有目共睹,而且他的技术修为也绝对无人质疑。因此他写的这本书秉承了他一贯的优势。符合所有好处所具备的条件。
《Java性能优化权威指南》
Java性能优化圣经!主要为Java SE 和Java EE 应用的性能调优提供建议。主要包括以下几方面:性能监控、性能分析、Java HotSpot VM 调优、高效的基准测试以及Java EE 应用的性能调优。
学习过程中精品开发工具推荐:
JDK(Java开发工具包)、SparkJava、jClarity、Eclipse、NetBeans、JUnit.org、IntelliJ IDEA 13.1 以上都是本人收集的资料希望对你有所帮助。

⑷ 想学习java,初学者适合看什么书呢

入门类

1.《java从入门到精通》(第3版)

【内容介绍】

本书从初学者角度出发,通过通俗易懂的语言、丰富多彩的实例,详细介绍了使用Java语言进行程序开发应该掌握的各方面技术。全书共分28章,包括:初识Java,熟悉Eclipse开发工具,Java

语言基础,流程控制,字符串,数组,类和对象,包装类,数字处理类,接口、继承与多态,类的高级特性,异常处理,Swing程序设计,集合类,I/O输入输出,反射,枚举类型与泛型,多线程,网络通信,数据库操作,Swing表格组件,Swing树组件,Swing其他高级组件,高级布局管理器,高级事件处理,AWT绘图与音频播放,打印技术和企业进销存管理系统等。所有知识都结合具体实例进行介绍,涉及的程序代码给出了详细的注释,可以使读者轻松领会Java程序开发的精髓,快速提高开发技能。

【推荐理由】

本书内容详尽,实例丰富,非常适合作为编程初学者的学习用书,也适合作为开发人员的查阅、参考资料。

2.《java核心技术卷一》

【内容介绍】

本书是Java技术经典参考书,多年畅销不衰,第7版在保留以前版本风格的基础上,涵盖Java2开发平台标准版J2SE5.0的基础知识,主要内容包括面各对象程序设计、反射与代理、接口与内部类、事件监听器模型、使用SwingUI工具箱进行图形用户界面设计,异常处理、流输入/输出和对象序列化、泛型程序设计等。本书内容翔实、深入浅出,附有大量程序实例,极具实用价值,是Java初学者和Java程序员的必备参考书。

【推荐理由】

本书出版以来,深受广大读者的喜爱,它全面介绍了Java SE的基础知识,不但具有使用价值,而且易于阅读,易理解,它必成为想进军Java和基础薄弱同学的不二之选。

3.《java编程语言》

【内容介绍】

本书以Java语言创建者的独特视角向读者展现了为什么以及如何使用Java语言,以便读者理解Java语言的基本设计目标以及它在现实世界中的应用。

本书介绍的是Java语言的最新版本,该版本在《Java Language Specification,SecondEdition》中定义,在Java2SDK1.3标准版中实现。本书已是第三版,在经构上相对前两版有所调整,重点讲述了新的语言特征,并提供了新API的使用实例。本书完全覆盖了Java语言当前版本的特征和类库,可以作为Java语言的入门向导,也可作为高级Java开发及Java语言教学的参考用书。

进阶类

1.《java编程思想》

【内容介绍】

本书共22章,包括操作符、控制执行流程、访问权限控制、复用类、多态、接口、通过异常处理错误、字符串、泛型、数组、容器深入研究、JavaI/O系统、枚举类型、并发以及图形化用户界面等内容。这些丰富的内容,包含了Java语言基础语法以及高级特性,适合各个层次的Java程序员阅读,同时也是高等院校讲授面向对象程序设计语言以及Java语言的绝佳教材和参考书。

【推荐理由】

本书赢得了全球程序员的广泛赞誉,即使是最晦涩的概念,在BruceEckel的文字亲和力和小而直接的编程示例面前也会化解于无形。从Java的基础语法到最高级特性(深入的面向对象概念、多线程、自动项目构建、单元测试和调试等),本书都能逐步指导你轻松掌握。

2.《java核心技术卷二》

【内容介绍】

《JAVA核心技术卷2:高级特征》是Java技术权威指南,全面覆盖Java技术的高级主题,包括流与文件、XML、网络、数据库编程、高级Swing、高级 AWT、JavaBean构件、安全、分布式对象、脚本、编译与注解处理等,同时涉及本地化、国际化以及Java SE6的内容。《JAVA核心技术卷Ⅱ:高级特征》对Java技术的阐述精确到位,叙述方式深入浅出,并包含大量示例,从而帮助读者充分理解Java语言以及Java类库的相关特性。

【推荐理由】

本书是经典的《Java核心技术,卷II:高级特性》的最新修订版,涵盖了JavaSE6平台的高级用户界面程序设计和企业特性。与第1卷(涵盖了核心的语言和类库特性)一样,本卷已经更新到了JavaSE6。并且对新内容都作了重点标注。书中所有的示例程序都进行了详细的设计,用来演示最新的编程技术。并展示针对专业开发者在现实中所碰到的典型问题的最佳解决方案。本书包含有关StAXAPI、JDBC4、编译器API、脚本框架、闪屏和托盘API以及其他许多JavaSE6改进特性的新章节。本书聚焦于Java语言中更高级的特性,包括下列内容:流与文件、网络、数据库编程、XML、JNDI与LDAP、国际化、高级GUI组件、Java2D、JavaBeans、安全、RMI与Web服务、高级AWT、注解、本地方法。

3.《疯狂java讲义》

【内容介绍】

本书深入介绍了Java编程的相关方面,全书内容覆盖了Java的基本语法结构、Java的面向对象特征、Java集合框架体系、Java泛型、异常处理、JavaGUI编程、JDBC数据库编程、Java注释、Java的IO流体系、Java多线程编程、Java网络通信编程和Java反射机制。共覆盖了java.awt、java.lang、http://java.io和java.nio、java.sql、java.text、java.util、javax.swing包下绝大部分类和接口。

【推荐理由】

本书并不单纯从知识角度来讲解Java,而是从解决问题的角度来介绍Java语言,所以本书中介绍了大量实用案例开发。这些案例既能让读者巩固每章的知识,又可以让读者学以致用、激发编程自豪感,进而引爆内心的编程激情。本书光盘里包含书中所有示例的代码,如果读者希望获得课后练习的程序代码。

本书为所有打算深入掌握Java编程的读者而编写,适合各种层次的Java学习者和工作者阅读,也适合作为大学教育、培训机构的Java教材。但北大青鸟光谷校区专业老师认为,如果只是想简单涉猎Java,则本书过于庞大,不适合阅读。

JavaEE类

1.《javaWeb整合开发王者归来》

【内容介绍】

本书全面介绍了Java Web开发中的各种相关技术及知识。全书分为9篇,内容层次清晰,难度循序渐进。第1篇为入门篇,内容包括JavaWeb开发概述等;第2篇为基础篇,内容包括Servlet技术、JSP技术、会话跟踪、过滤器Filter、监听器Listener等;第3篇为高级篇,内容包括JSTL标签库的使用、如何自定义标签、资源国际化、数据库概述、JDBC详解、XML概述等;第4篇为Struts框架篇,内容不仅包括Struts 1.x的内容,也包括Struts2.x中的内容;第5篇为Hibernate框架篇;第6篇为Spring框架篇;第7篇为EJB与Web服务篇,内容包括EJB3概述、JPA规范Web服务框架XFire等;第8篇为工具篇,内容包括在JavaWeb项目中常用的开源工具框架、主要有版本管理工具SVN、日志工具commons-logging与Log4J、报表图形引擎JFreeChart、PDF组件iText等;第9篇为实战篇,内容为两个典型的应用系统:论坛系统(Spring+Struts+Hibernate)、宠物商店(EJB3+JPA+Struts 2)。

【推荐理由】

资深Java程序员耗时一年时间写作,十年开发经验毫无保留。全面、系统、深入介绍Java Web开发的核心技术与主流框架。

2.《spring 入门到精通》

【内容介绍】

本书由浅入深,循序渐进地介绍了Spring的体系结构和相关知识点,目的是帮助初学者快速掌握Spring,并能使用Spring进行应用程序的开发。本书最大的特色在于每章都是由浅入深,从一个简单的示例入手,让读者快速了解本章内容,然后再详细讲解本章涉及的基本原理和知识点,最后再通过一个详细的示例宋巩固所学内容。本书每一章的例子都是经过精挑细选,具有很强的针对性,力求让读者通过亲自动手做而掌握其原理和方法,从而学习尽可能多的知识。本书适用于初、中级软件开发人员,同时也可用作高校相关专业师生和社会培训班的教材。

【推荐理由】

全书共分14章,内容涵盖了Spring的基础概念、核心容器、SpringAOP、事务处理、持久层封装、Web框架、定时器、Spring和Struts、Spring和Hibernate、Spring和Ant、Spring和Junit。本书适用于初、中级软件开发人员,同时也可用作高校相关专业师生和社会培训班的教材。

3.《JavaWeb开发详解》

【内容介绍】

本书共分4部分,从XML、Servlet、JSP和应用的角度向读者展示了Java Web开发中各种技术的应用,循序渐进地引导读者快速掌握Java Web开发。

【推荐理由】

本书内容全面,涵盖了从事Java Web开发所应掌握的所有知识,在知识的讲解上本书采用理论与实践相结合的方式,从程序运行的内部机制进行分析讲解,并通过大量的实例和实验来验证并运用本书的知识。

以上书籍资料希望对你有帮助,有其他问题可以留言!

⑸ 零基础的人学java,看哪些书。。求推荐几本书籍

《疯狂java讲义》 对于这本书,相信大家不陌生,《疯狂讲义》这本书深入介绍了java编程的相关方面,这本书的内容有Java基本语法结构、面向对象特征、集合框架体系、 泛型、异常处理、GUI编程、JDBC数据库编程、注释、的IO流体系、多线程编程、网络通信编程、反射机制和java开发中需要的jar包、类和接口。

⑹ 做网络通信 JAVA开发的,主要要学习说明内容

1.IP地址与端口号
网络中的计算机若需要实现相互通信,必须为每台计算机指定标识号,通过标识号来指定接收数据和识别发送数据的计算机。TCP/IP协议中的“标识”即为IP地址。
一台计算机可同时运行多个网络程序,使用IP地址能够将数据发送到计算机,却不能保证将数据提交至哪个网络程序。因此每个被发送的网络数据包的头部都设有“端口”部分,该部分为整数,用于表示将数据帧交给哪个应用程序进行处理。同时还必须为网络程序指定端口号,使不同的应用程序接收不同端口上的数据。
同一台计算机不能存在多个使用同一端口的程序。端口数的范围在0-65535之间,其中在0-1023之间的端口号用于知名的网络服务和应用,1024以上的端口号用于普通应用程序,这样做可以避免端口号代表的网络程序串用。

2.TCP与UDP
TCP为传输控制协议,UDP为用户数据报协议。TCP是面向连接的通信协议,它提供两台计算机之间可靠无差错的数据传输。应用程序使用TCP进行通信时,数据源与目标之间将建立虚拟的连接,连接一旦建立,两台计算机之间就可以将数据作为双向字节流进行交换。
UDP是无连接的通信协议,它不保证可靠数据的传输,但能够实现向若干个目标发送数据的功能。

3.Socket简介
Socket(套接字)是网络驱动层为应用程序提供的接口和机制,其作用可以看作是为应用程序创建的港口码头。

4.TCP网络编程概述
TCP协议具体操作步骤如下:
(1)服务器程序创建ServerSocket对象,调用accept()方法等待客户端连接。
(2)客户端程序创建Socket对象与客户端建立专线连接。
(3)服务器接收客户的连接请求,并创建新的Socket对象与客户端建立专线连接。
(4)实现(2)、(3)步骤中建立连接的两个Socket在同一线程上对话。
(5)服务器重新等待新的连接请求。

5.ServerSocket类
TCP网络服务器程序的编写,需要使用ServerSocket类创建服务器。
ServerSocket类的主要方法如下:
方法 类型 描述
public ServerSocket(int port) 构造方法 创建ServerSocket实例
public Socket accept() 方法 等待客户端连接
public InetAddress getInetAddress() 方法 返回服务器的IP地址
public boolean isClosed() 方法 返回ServerSocket的关闭状态
public void close() 方法 关闭ServerSocket
服务器端每次运行时均需调用accept()方法等待客户端连接,该方法执行后服务端将进入阻塞状态,直到客户端再次连接。accept()方法的返回类型为Socket。

6.Socket类
客户端必须创建Socket对象来建立与服务器的连接,每个Socket对象代表一个客户端。
Socket类的常用方法如下:
方法 类型 描述
public Socket(String host,int port) 构造方法 创建Socket对象,同时指定要连接服务器的主机名和商品号
public InputStream getInputStream() 方法 返回套接字的输入流
public OutputStream getOutputStream() 方法 返回套接字的输出流
public boolean isClosed() 方法 返回套接字的关闭状态
public void close() 方法 关闭此Socket

注意:TCP网络编程中的信息使用输入输出流的形式传递。

7.TCP服务器程序
编写TCP服务器程序,代码如下:
package com;
import java.net.*;
import java.io.*;
public class TcpServer{
public static void main(String []a){
ServerSocket server=null;
Socket socket=null;
BufferedReader in=null;
PrintWriter out=null;
try{
//服务器在9000端口上监听
server=new ServerSocket(9000);
//接收客户端连接
socket=server.accept();
//得到客户端输入信息
in=new BufferedReader(new InputStreamReader(socket.getInputStream()));
//向客户端输出信息,true是自动刷新缓冲区
out=new PrintWriter(socket.getOutputStream(),true);
out.println("已建立与服务器的连接");
String info=in.readLine();
System.out.println("客户端的输入是:"+info);
}catch(Exception e){
e.printStackTrace();
}
finally{
try{
in.close();
out.close();
socket.close();
server.close();

}catch(Exception e){
e.printStackTrace();
}
}
}
}

为验证服务器端程序能否正常工作,程序还需提供客户端程序与服务器进行通信。Windows系统中的telnet程序是一个系统自带的TCP客户端,可以使用telnet来进行与服务器端的通信测试。运行telnet时指定连接服务器的IP地址和端口号,连接一旦建立,telnet程序窗口就可以将输入内容发送至服务器,同时,可以显示从服务器接收到的数据。测试步骤如下:
(1) 运行服务器端程序
(2) 在DOS窗口中运行telnet 127.0.0.1 9000,由于服务器端程序和客户端程序在同一台机器上,所以可以使用127.0.0.1代表本机。

注:调用一次accept()方法只能接受一个连接,接受多个连接需要将该方法放在循环语句中,同时每个连接的数据的数据输入输出也应放在一个循环语句中,才能实现服务器端与客户端的持续交换。
class Service implements Runnable{
Socket socket=null;
BufferedReader in=null;
PrintWriter out=null;
public Service(Socket socket){
this.socket=socket;
}

public void run(){
//得到客户端输入信息
in=new BufferedReader(new InputStreamReader(socket.getInputStream()));
//向客户端输出信息,true是自动刷新缓冲区
out=new PrintWriter(socket.getOutputStream(),true);
//循环读取客户端数据并向客户端写入数据
while(true){
out.println("已建立与服务器的连接");
System.out.println("客户端说:"+in.readLine());
}
}
catch(Exception e){
e.printStackTrace();
}
finally{
try{
in.close();
out.close();
socket.close();
server.close();

}catch(Exception e){
e.printStackTrace();
}
}
}
}

public class TcpServer{
ServerSocket server=null;
Socket socket=null;
try{
//服务器在9000端口上监听
server=new ServerSocket(9000);
//接收多个客户端连接
while(true){
socket=server.accept();
new Thread(new Service(socket)).start();
}catch(Exception e){
e.printStackTrace();

}
}
}

8.TCP客户端程序
package com;
import java.net.*;
import java.io.*;
public class TcpClient{
public static void main(String []a){
ServerSocket server=null;
Socket socket=null;
BufferedReader in=null;
BufferedReader input=null;
PrintWriter out=null;
try{
socket=new Socket("127.0.0.1",9000);
while(true){
input=new BufferedReader(new InputStreamReader(System.in);
in=new BufferedReader(new InputStreamReader(socket.getInputStream()));
}

//向服务器端输出信息,true是自动刷新缓冲区
out=new PrintWriter(socket.getOutputStream(),true);
out.println("客户端说:"+input.readLine);
String info=in.readLine();
System.out.println("服务器说:"+info);
}catch(Exception e){
e.printStackTrace();
}
}
}

9.UDP网络编程
(1)DatagramSocket类主要用于实现信息的发送和接收。
DatagramSocket类的主要方法:
方法 类型 描述
public DatagramSocket() 构造方法 构造DatagramSocket对象不指定监听端口
public DatagramSocket(int port) 构造方法 构造DatagramSocket对象指定监听端口
public void send(DatagramPacket p) 方法 发送数据报
public void receive(DatagramPacket p) 方法 接收数据报

(2)DatagramPacket类
DatagramPacket类用于包装一条要发送或接收的信息,发送数据和接收数据都需要构建DatagramPacket对象。
DatagramPacket类的主要方法:
方法 类型 描述
public DatagramPacket(byte[] buf,in length) 构造方法 构造DatagramPacket对象时指定内存空间和大小
public DatagramPacket(byte[] buf,in length,InetAddress address,int port) 同上
public byte[] getData() 方法 返回接收数据
public int getLength() 方法 返回发送或接收数据的长度
public InetAddress getAddress() 方法 返回机器的地址

(3)InetAddress类
InetAddress类用于表示计算机地址,主要方法如下:
方法 类型 描述
public static InetAddress getByName(String host) 方法 通过主机名或IP地址获得一个InetAddress对象
public String getHostName() 方法 获得IP地址对应的主机名
public String getHostAddress() 方法 返回IP地址字符串

10. UDP程序设计
编写UDP网络程序需要分别编写发送程序和接收程序
(1)发送程序
package com;
import java.net.*;
public class UdpSend{
public static void main(String [] a){
DatagramSocket ds=null;
DatagramPacket dp=null;
byte[] buf=new byte[1024];
try{
//DatagramSocket类用于完成消息的发送
ds=new DatagramSocket();
String info="hello world";
dp=new DatagramPacket(info.getBytes(),info.length,InetAddress.getByName("localhost"),3000);
//发送数据包
ds.send(dp);
}catch(Exception e){
e.printStackTrace();
}
finally
{
ds.close(); //消息发送完毕,关闭对象
}
}
}

(2)接收程序
package com;
import java.net.*;
public class UdpRecv{
public static void main(String [] a){
DatagramSocket ds=null;
DatagramPacket dp=null;
byte[] buf=new byte[1024];
try{
//DatagramSocket类用于完成消息的发送
ds=new DatagramSocket();
dp=new DatagramPacket(buf,1024);
//接收发送方发送的数据
ds.receive(dp);
String str=new String(dp.getData(),0,dp.getLength());
str=str+" from "+dp.getAddress.getHostAddress();
System.out.println(str);
}catch(Exception e){
e.printStackTrace();
}
finally
{
ds.close(); //消息发送完毕,关闭对象
}
}
}

阅读全文

与java网络通信编程教材相关的资料

热点内容
ug50能通过补丁升级到高版本吗 浏览:766
dxf文件cad打不开的原因 浏览:525
2012怎么改域用户密码 浏览:550
dtv网络电视手机版下载 浏览:954
mfc100u放在哪个文件夹 浏览:359
javaweb插件 浏览:58
pto密码忘记 浏览:567
logo竞赛教程 浏览:481
贵阳去哪里学编程比较好 浏览:132
java将string转为json 浏览:291
ppt2013制作exe文件 浏览:80
linux文件只读不能复制 浏览:597
开关代码 浏览:91
word绘图板 浏览:359
苹果minecraftpe注册 浏览:775
ps怎么存储文件卡 浏览:728
微信清除缓存图片恢复 浏览:305
安卓app会闪退怎么解决 浏览:429
哪些app背单词是免费的 浏览:889
cf击杀图标放哪个文件夹 浏览:208

友情链接