导航:首页 > 编程语言 > java网络编程笔记

java网络编程笔记

发布时间:2023-03-20 22:48:58

java网络编程的目录

第一章 Java网络编程的原因
网络程序的功能
安全性
等等!还有更多!
第二章 基本网络概念
网络
网络的分层
IP、TCP和UDP
Internet
客户/服务器模型
Internet标准
第三章 基本Web概念
URI
HTML、SGML和XML
HTTP
MIME媒体类型
服务器端程序
第四章 流
输出流
输人流
过滤器流
阅读器和书写器
第五章 线程
运行线程
返回线程中的信息
同步
死锁
线程调度
线程池
第六章 查找Internet地址
InetAddress类
Inet4Address和Inet6Address
NetworkInterface类
一些有用的程序
第七章 U R L和U R I
URL类
URLEncoder和URLDecoder类
URI类
代理
通过GET方法与服务器端程序通信
访问受口令保护的网站
第八章 Swing中的HTM L
组件上的HTML
JEditorPane
解析HTML
coOkie一
第九章 客户端Socket
socket基础
用Telnet研究协议
Socket类
Socket异常
Socket地址
示例
第十章 服务器socket
ServerSocket类
一些有用的服务器
第十一章安全Socket
保护通信
创建安全客户端socket
SsLSocket类的方法
创建安全的服务器socket
SSLSerVerSocket类的方法
第十二章 非阻塞I/O。
一个示例客户端
一个示例服务器
缓冲区
通道
就绪选择
第十三章 UDP数据报和Socket
UDP协议
DatagramPacket类
DatagramSocket类
一些有用的应用程序
DatagramChannel
第十四章 组播socket
何为组播socket?
使用组播socket
两个简单示例
第十五章 URLConnection
打开URLConnection
读取服务器的数据
读取首部
配置连接
配置客户端的请求HTTP首部
向服务器写入数据
内容处理器
0bject方法
URLConnection的安全考虑
猜测MIME内容类型
HttpURLCOnnectiOn
缓存
JarURLCOnnectiOn
第十六章 协议处理器
何为协议处理器7
URLStreamHandler类
编写协议处理器
更多协议处理器示例和技术
URLStreamHandlerFactory接口
第十七章 内容处理器
何为内容处理器7
ContentHandler类
ContentHandlerFactory接口
FITS图片格式的内容处理器
第十八 章远程方法调用
何为远程方法调用7
实现
在运行时加载类
java rmi包
jaVarmiregistry包
javarmiserver包
第十九章 JavaMailAPI
何为JavaMail API?
发送电子邮件一
接收邮件
口令认证
地址一
URLName类
Message类
Part接口
多部分消息和附件
MIME消息
文件夹
……

⑵ (一)Java多线程 (二)输入输出流 (三)Java网络编程 (四)Java数据库编程

(1)多线程我感觉你应该知道首先实现线程类的两个方法。一个是继承Thread类.另一个是实现Runnable接口.然后怎样启动一个线程类。还有就是实现的两种方法的区别。例如资源是不是能共享呀等等。
(2)对于输入输出流.你首先要明白任何输出流输入流都是继承自OutputStream InputStream 还有Writer Reader。说得简单一点所有字符流的祖先都是(Writer或者Reader)而所有字节流的祖先都是
(OutputStream 或者InputStream)其中你还要明白字符和字节的区别。最后以上所有的祖先都是抽象的。所以要实现都是通过多态来实现的。用父类的引用指用子类的实例。
(3)Java网络编程这个就不好说了。全得平时的理解加上网络课的学习
(4)java数据库编程这个比较重要。首先你得知道。常用的数据库有那些。然后怎样让java程序与数据库连接起来。一般采用都是thin(对于oracle)然后。你得记住那些很固定的格式。例如什么驱动的字符呀。还有就是url呀。等等各个数据库是不一样的。例如oralce你要加载驱动你得用Class.forName("oracle.jdbc.driver.OracleDriver");其中里面的那个格式每个数据库都不一样。最后你得知道怎样从数据库里面查询一个你想要的结果。然后怎样能过程序得到这个结果。这就是jdbc里提供的一些方法了。例如像什么ResulSet对象呀。等等。总之多多练习就能了解的。

⑶ Java网络编程从入门到精通(4):DNS缓存

在通过DNS查找域名的过程中 可能会经过多台中间DNS服务器才能找到指定的域名 因此 在DNS服务器上查找域名是非常昂贵的操作 在Java中为了缓解这个问题 提供了DNS缓存 当InetAddress类第一次使用某个域名(如)创建InetAddress对象后 JVM就会将这个域名和它从DNS上获得的信息(如IP地址)都保存在DNS缓存中 当下一次InetAddress类再使用这个域名时 就直接从DNS缓存里获得所需的信息 而无需再访问DNS服务器

DNS缓存在默认时将永远保留曾经访问过的域名信息 但我们可以修改这个默认值 一般有两种方法可以修改这个默认值

在程序中通过java security Security setProperty方法设置安全属性nel的值(单位 秒) 如下面的代码将缓存超时设为 秒

java security Security setProperty( nel );

设置java security文件中的neorkaddresl属性 假设JDK的安装目录是C jdk 那么java security文件位于c jdk jrelibsecurity目录中 打开这个文件 找到nel属性 并将这个属性值设为相应的缓存超时(单位 秒)

如果将nel属性值设为 那么DNS缓存数据将永远不会释放 下面的代码演示了使用和不使用DNS缓存所产生效果

package mynet;import *;publicclass MyDNS{publicstaticvoidmain(String[]args)throwsException{//args[ ]:本机名args[ ] 缓冲时间if(args length< )return;java security Security setProperty( nel args[ ]);longtime=System currentTimeMillis();InetAddressaddresses []=InetAddress getAllByName(args[ ]);System out println( addresses : +String valueOf(System currentTimeMillis() time)+ 毫秒 );for(InetAddressaddress:addresses )System out println(address);System out print( 按任意键继续 );System in read();time=System currentTimeMillis();InetAddressaddresses []=InetAddress getAllByName(args[ ]);System out println( addresses : +String valueOf(System currentTimeMillis() time)+ 毫秒 );for(InetAddressaddress:addresses )System out println(address);}}

在上面的代码中设置了DNS缓存超时(通过args[ ]参数) 用户可以通过命令行参数将这个值传入MyDNS中 这个程序首先使用getAllByName建立一个InetAddress数组 然后通过System in read使程序暂停 当用户等待一段时间后 可以按任意键继续 并使用同一个域名(args[ ])再建立一个InetAddress数组 如果用户等待的这段时间比DNS缓存超时小 那么无论情况如何变化 addresses 和addresses 数组中的元素是一样的 并且创建addresses 数组所花费的时间一般为 毫秒(小于 毫秒后 Java无法获得更精确的时间)

测试

执行如下命令(将DNS缓存超时设为 秒)

java mynet MyDNS

运行结果 (在 秒之内按任意键)

addresses : 毫秒/ 按任意键继续addresses : 毫秒/

运行结果 (在 秒后按任意键)

addresses : 毫秒/ 按任意键继续addresses : 毫秒/

在上面的测试中可能出现两个运行结果 如果在出现 按任意键继续… 后 在 秒之内按任意键继续后 就会得到运行结果 从这个结果可以看出 addresses 所用的时间为 毫秒 也就是说 addresses 并未真正访问DNS服务器 而是直接从内存中的DNS缓存得到的数据 当在 秒后按任意键继续后 就会得到运行结果 这时 内存中的DNS缓存中的数据已经释放 所以addresses 还得再访问DNS服务器 因此 addresses 的时间是 毫秒(addresses 和addresses 后面的毫秒数可能在不同的环境下的值不一样 但一般情况下 运行结果 的addresses 的值为 或是一个接近 的数 如 运行结果 的addresses 的值一般会和addresses 的值很接近 或是一个远比 大的数 如 )

测试

执行如下命令(ComputerName为本机的计算机名 DNS缓存超时设为永不过期[ ])

java mynet MyDNS ComputerName

运行结果(按任意键继续之前 将 删除)

addresses : 毫秒myuniverse/ myuniverse/ 按任意键继续addresses : 毫秒myuniverse/ myuniverse/

从上面的测试可以看出 将DNS缓存设为永不过期后 无论过多少时间 按任意键后 addresses 任然得到了两个IP地址( 和 ) 而且addresses 的时间是 毫秒 但在这时 已经被删除 因此可以判断 addresses 是从DNS缓存中得到的数据 如果运行如下的命令 并在 秒后按任意键继续后 addresses 就会只剩下一个IP地址( )

java mynet MyDNS ComputerName

如果域名在DNS服务器上不存在 那么客户端在进行一段时间的尝试后(平均为 秒) 就会抛出一个UnknownHostException异常 为了让下一次访问这个域名时不再等待 DNS缓存将这个错误信息也保存了起来 也就是说 只有第一次访问错误域名时才进行 称左右的尝试 以后再访问这个域名时将直接抛出UnknownHostException异常 而无需再等待 秒钟

访问域名失败的原因可能是这个域名真的不存在 也可能是因为DNS服务器或是其他的硬件或软件的临时故障 因此 一般不能将这个域名错误信息一直保留 在Java中可以通过neorkaddresl属性设置保留这些信息的时间 这个属性的默认值是 秒 它也可以通过java security Security setProperty方法或java security文件来设置 下面的代码演示了neorkaddresl属性的用法

package mynet;import *;publicclass MyDNS {publicstaticvoidmain(String[]args)throwsException{java security Security setProperty( neorkaddresl );longtime= ;try{time=System currentTimeMillis();InetAddress getByName( );}catch(Exceptione){System out println( 不存在!address : +String valueOf(System currentTimeMillis() time)+ 毫秒 );}//Thread sleep( );//延迟 秒try{time=System currentTimeMillis();InetAddress getByName( );}catch(Exceptione){System out println( 不存在!address : +String valueOf(System currentTimeMillis() time)+ 毫秒 );}}}

在上面的代码中将neorkaddresl属性值设为 秒 这个程序分别测试了address 和address 访问(这是个不存在的域名 读者可以将其换成任何不存在的域名)后 用了多长时间抛出UnknownHostException异常

运行结果

不存在!address : 毫秒不存在!address : 毫秒

我们从上面的运行结果可以看出 address 使用了 毫秒就抛出了异常 因此 可以断定address 是从DNS缓存里获得了域名不可访问的信息 所以就直接抛出了UnknowHostException异常 如果将上面代码中的延迟代码的注释去掉 那么可能得到如下的运行结果

不存在!address : 毫秒不存在!address : 毫秒

从上面的运行结果可以看出 在第 秒时 DNS缓存中的数据已经被释放 因此 address 仍需要访问DNS服务器才能知道是不可访问的域名

在使用DNS缓存时有两点需要注意

可以根据实际情况来设置nel属性的值 一般将这个属性的值设为 但如果访问的是动态映射的域名(如使用动态域名服务将域名映射成ADSL的动态IP) 就可能产生IP地址变化后 客户端得到的还是原来的IP地址的情况

lishixin/Article/program/Java/hx/201311/11147

⑷ JAVA网络编程

java的大方向就是j2ee
j2ee不仅仅是socket编程,具体包括13中核心技术。

J2EE的核心API与组件

J2EE平台由一整套服务(Services)、应用程序接口(APIs)和协议构成,它对开发基于Web的多层应用提供了功能支持,下面对J2EE中的13种技术规范进行简单的描述(限于篇幅,这里只能进行简单的描述):

1. JDBC(Java Database Connectivity):
JDBC API为访问不同的数据库提供了一种统一的途径,象ODBC一样,JDBC对开发者屏蔽了一些细节问题,另外,JDCB对数据库的访问也具有平台无关性。

2. JNDI(Java Name and Directory Interface):
JNDI API被用于执行名字和目录服务。它提供了一致的模型来存取和操作企业级的资源如DNS和LDAP,本地文件系统,或应用服务器中的对象。

3. EJB(Enterprise JavaBean):
J2EE技术之所以赢得媒体广泛重视的原因之一就是EJB。它们提供了一个框架来开发和实施分布式商务逻辑,由此很显着地简化了具有可伸缩性和高度复杂的企业级应用的开发。EJB规范定义了EJB组件在何时如何与它们的容器进行交互作用。容器负责提供公用的服务,例如目录服务、事务管理、安全性、资源缓冲池以及容错性。但这里值得注意的是,EJB并不是实现J2EE的唯一途径。正是由于J2EE的开放性,使得有的厂商能够以一种和EJB平行的方式来达到同样的目的。

4. RMI(Remote Method Invoke):
正如其名字所表示的那样,RMI协议调用远程对象上方法。它使用了序列化方式在客户端和服务器端传递数据。RMI是一种被EJB使用的更底层的协议。

5. Java IDL/CORBA:
在Java IDL的支持下,开发人员可以将Java和CORBA集成在一起。他们可以创建Java对象并使之可在CORBA ORB中展开, 或者他们还可以创建Java类并作为和其它ORB一起展开的CORBA对象的客户。后一种方法提供了另外一种途径,通过它Java可以被用于将你的新的应用和旧的系统相集成。

6. JSP(Java Server Pages):
JSP页面由HTML代码和嵌入其中的Java代码所组成。服务器在页面被客户端所请求以后对这些Java代码进行处理,然后将生成的HTML页面返回给客户端的浏览器。

7. Java Servlet:
Servlet是一种小型的Java程序,它扩展了Web服务器的功能。作为一种服务器端的应用,当被请求时开始执行,这和CGI Perl脚本很相似。Servlet提供的功能大多与JSP类似,不过实现的方式不同。JSP通常是大多数HTML代码中嵌入少量的Java代码,而servlets全部由Java写成并且生成HTML。

8. XML(Extensible Markup Language):
XML是一种可以用来定义其它标记语言的语言。它被用来在不同的商务过程中共享数据。
XML的发展和Java是相互独立的,但是,它和Java具有的相同目标正是平台独立性。通过将Java和XML的组合,您可以得到一个完美的具有平台独立性的解决方案。

9. JMS(Java Message Service):
MS是用于和面向消息的中间件相互通信的应用程序接口(API)。它既支持点对点的域,有支持发布/订阅(publish/subscribe)类型的域,并且提供对下列类型的支持:经认可的消息传递,事务型消息的传递,一致性消息和具有持久性的订阅者支持。JMS还提供了另
一种方式来对您的应用与旧的后台系统相集成。

10. JTA(Java Transaction Architecture):
JTA定义了一种标准的API,应用系统由此可以访问各种事务监控。

11. JTS(Java Transaction Service):
JTS是CORBA OTS事务监控的基本的实现。JTS规定了事务管理器的实现方式。该事务管理器是在高层支持Java Transaction API (JTA)规范,并且在较底层实现OMG OTS specification的Java映像。JTS事务管理器为应用服务器、资源管理器、独立的应用以及通信资源管理器提供了事务服务。

12. JavaMail:
JavaMail是用于存取邮件服务器的API,它提供了一套邮件服务器的抽象类。不仅支持SMTP服务器,也支持IMAP服务器。

13. JAF(JavaBeans Activation Framework):
JavaMail利用JAF来处理MIME编码的邮件附件。MIME的字节流可以被转换成Java对象,或者转换自Java对象。大多数应用都可以不需要直接使用JAF。

第一个阶段(java基础阶段)

1.java语法
2.面向对象
3.常用的api
4.界面编程
5.多线程
6.文件io
7.java网络编程..

看看 张孝祥老师的 java视频 (不过张孝
祥老师普通话不是很好,而且语速很慢,不过技术是不用说的啦!感谢张老师的无私奉献了,呵呵)

第二个阶段 (数据库阶段)

1.oracle
2.mysql
3.sql server
目前中国软件公司用的最多的三大主流数据库是sql server,mysql ,oracle .目前看来oracle数据库越来越流行了。一般情况下PHP对应MySQL数据库;ASP对应SQL数据库;JSP对应ORACLE数据库。所以大家会经常看
到市场上JAVA培训都是用的ORACLE数据库,其实你学会了ORACLE数据库,再去学习MySQL、SQL数 据库,你会觉得有很多相似的之处,学起来也容易上手了。oracle我推荐
韩顺平老师 oracle视频 (韩老师授课很有趣,特适合基础不太好的人。讲课有一套)

第三个阶段 (web开发阶段)

1.html
2.css
3.javascript

这三个部分是进行web开发的必须技术.一定要好好学习.不过我当时没有发现有讲的特别好的。好像很多老师都讲框架和后台,界面这块不多,所以就没有什么好推荐的了,大家可以
在网上找找看看,<<别具光芒>> 这本书讲的挺好,不过不太适合初学者,可以看看孙鑫老师视频的《HTML语言速成》。

第四个阶段 (j2ee 中级部分)
1.servlet
2.jsp
3.mvc

这个阶段是接近企业的需求了,所以学习起来,难度偏大,如果前面没有学习扎实,会比较麻烦,我就是这样的,前面没有吃透,就学习j2ee 中级,搞得我消化不良。所以小弟我中心的告诫大家,把前面的学好,再学习第四个阶段,这里的mvc思想不太好理解,是学习的重点。同时要学习tomcat/jboss/wl 这些服务器所以,你可能感到要学习的东西一下多了很多,其实我就在这里动摇过,有那么一段时间,又想放弃了。可是一想到 房东那种不屑的表情,我就想,一定要好好学习,混出个人样来。我家是农村的,回去就是种地,当公务员我没有关系,再说会老家我学习的专业也用不上,要不就是当个网管什么的,不说了,反正当时心情很复杂吧。这个阶段我推荐
韩顺平老师 servlet视频 jsp视频 (这里也特别谢谢韩顺平老师,我是比较喜欢他讲课的风格,因为我当时基础不好,所以不敢看讲的太理论的课。)

第五个阶段 (j2ee 高级部分)

1.struts
2.hibernate
3.spring

学习完Servlet、JSP然后再去学习框架Struts、Hibernate、Spring等最前沿的最流行的网络编程必备的软件技能。
推荐的参考书籍是美河图书提供《Servlet与JSP核心编程》
框架的基础就是Servlet、JSP。首先大家应该学习的是Struts框架,典型的MVC模型。推荐学习视频是 张小静的Struts视频。(网上有孙鑫的视频嘛,主要就是讲的Struts、Hibernate、Spring这三个框架,但是这个好像是偷录的效果不好,听起来比较吃力,衔接的不好)
推荐书籍孙卫琴编着《精通Struts基于MVC的Java.Web设计与开发》

然后就是Hibernate框架,推荐李兴华老师的Hibernate视频,
参考书籍孙卫琴 《精通Java对象持久化技术详解》

最后关于Spring框架的视频,在网上你可以搜索到很多,但是系统讲解的真的没有发现,本着对大家负责的态度,不敢乱推荐,大家到网上搜一下,也许现在有了也可能。

学完上述三个阶段的内容,就在看看xml,ajax,ejb这些知识!尤其是的Ajax用得非常火,我们公司就用,ajax的框架流行的是(jquery,dw),我们公司用的是jquery.这里提一 下,学习Ajax之前一定要有JavaScript的基础,推荐视频张孝祥JavaScript网页开发,这套视频有相应 的配套书籍《JavaScript网页开发》

⑸ java网络编程基础知识

java基础是必须要会的。
网络编程这部分其实没什么东西,对于线程和并发方面要求的高一些。
对于一些简单应用来说,如果基础好的话看两个星期的书,做点联系就可以了。JAVA给提供了一套API,针对于TCP和UDP协议来操作,另外有关IO方面要了解。
如果研究深了的话就复杂了。各种协议的实现、系统底层操作等等很复杂,我也说不太明白,一步步来吧。
JAVA语言程序设计这本书里有关于网络编程的知识,还有习题和例子,挺好。

⑹ 我在学java初级,网络编程这一章。觉得像这种代码和方法好难记住啊怎么记啊全部背下来吗

结论

我觉得学编程,写项目没有必要去背代码,除非你是为了面试,那就可以稍微背一下。你可以先了解网络编程相关的函数大概了解它们的作用,然后去一些代码开源网站找一些java网络编程相关的项目,然后你尝试去模仿它,这样的话,你的编程能力可能就会进步得快一点。

具体操作

  1. 在以下网站中进行相关网络编程函数的查询学习。

https://www.runoob.com/java/java-networking.html

里面也有相关例子的讲解。

    ⑺ java socket网络编程

    //==============Server.java=================//
    import java.io.IOException;
    import java.net.ServerSocket;
    import java.net.Socket;

    public class Server {
    public static void main(String[] args) throws IOException {
    ServerSocket s = new ServerSocket(12345);
    System.out.println("服务器就绪,请启动客户端.");
    Socket so = s.accept();
    byte[] buff = new byte[1024];
    int read = so.getInputStream().read(buff);
    String[] abc=new String(buff,0,read).split("\\D+");
    int a = Integer.parseInt(abc[0]);
    int b = Integer.parseInt(abc[1]);
    int c = Integer.parseInt(abc[2]);
    if(!cbt(a,b,c))
    so.getOutputStream().write("输入的数据无法组成三角形.".getBytes());
    else
    so.getOutputStream().write(getArea(a,b,c).getBytes());
    so.getOutputStream().flush();
    so.close();
    s.close();
    }

    private static String getArea(int a, int b, int c) {
    float s = (a+b+c)/2f;
    return "面积: "+Math.sqrt(s*(s-a)*(s-b)*(s-c));
    }

    private static boolean cbt(int a, int b, int c) {
    return a>0&&b>0&&c>0&&a+b>c&&b+c>a&&a+c>b;
    }
    }

    //=================Client.java======================//
    import java.io.IOException;
    import java.net.Socket;
    import java.net.UnknownHostException;
    public class Client {
    public static void main(String[] args) throws UnknownHostException, IOException {
    System.out.println("输入三角形的三边并用逗号隔开,如: (3,4,5) ");
    byte[] buff=new byte[64];
    int r = System.in.read(buff);
    String ipaddr = "localhost";//根据情况改变,在本机调试就不改了
    Socket so = new Socket(ipaddr,12345);
    so.getOutputStream().write(new String(buff,0,r).getBytes());
    r = so.getInputStream().read(buff);
    so.close();
    String rs = new String(buff,0,r);
    System.out.println(rs);
    }

    }

    //先启动Server,再启动Client

    阅读全文

    与java网络编程笔记相关的资料

    热点内容
    极限压缩方法 浏览:262
    小苮儿清读210部有声下载网盘 浏览:382
    qt程序编译成功后 浏览:616
    富二代装穷的电影有哪些 浏览:394
    吓一跳命令 浏览:189
    猫宝宝资源 浏览:954
    python3d库 浏览:735
    小苮儿网盘提取码 浏览:238
    怎么给磁盘加密c盘 浏览:381
    内核驱动编译v1 浏览:575
    韩国电影伦理中文 浏览:67
    大乐透复式算法计算器 浏览:845
    啄木鸟40部 浏览:502
    我的世界服务器版本下载地址 浏览:925
    怎么制作一个游戏的服务器 浏览:800
    python中xticks用法 浏览:905
    西瓜视频解压软心砖 浏览:137
    程序员被孤立怎么办 浏览:807
    主角秦风重生小说免费全文阅读 浏览:937
    电影名卧布吉岛 浏览:161