版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Java网络编程技术0网络应用软件1.Server/ClientWWW、FTP、EmailDatabaseapplication2.P2P迅雷、fleshget、easyMule、QQ1第1章Java网络编程预备知识1.1Java开发环境 1.2TCP/IP协议 1.3I/O流1.4Java多线程1.5JDBC编程 1.6JavaGUI开发技术1.7Java事件 1.8本章小结 21.1Java开发环境1.1.1JDK+notebook1.1.2IDEEclipse,NetBean,JBuilder31.2TCP/IP协议1.2.1TCP/IP协议与OSI参考模型1.2.2IP地址分类与子网划分1.2.3常用网络测试工具41.2.1TCP/IP协议和OSI参考模型TCP/IP协议栈与OSI参考模型的对应关系。应用层表示层会话层传输层网络层数据链路层物理层应用层传输层网络层7654321物理层数据链路层OSI参考模型TCP/IP5TCP/IP协议栈的封装过程
用户数据用户数据Appl首部应用数据Tcp首部Ip首部应用数据Tcp首部以太网首部应用数据Tcp首部Ip首部以太网首部TCP段IP数据报1420204以太网帧46-1500字节应用程序TCPIP以太网驱动程序6TCP/IP协议栈HTTP、Telnet、FTP、TFTP、Ping、etcTCP/UDPARP/RARPIPIGMPICMPEthernet、802.3、PPP、HDLC、FR、etc接口和线缆应用层传输层网络层
数据链路层提供应用程序网络接口建立端到端连接寻址和路由选择物理介质访问二进制数据流传输
物理层7应用层文件传输FTP、TFTP邮件效劳SMTP、POP3网络管理SNMP、Telnet、Ping、Tracert网络效劳HTTP、DNS、WINS8传输层协议应用层传输层网络层网络接入层TCPUDP9TCP/UDP报文格式0816243116位源端口16位目的端口32位序列号32位确认号URGACKPSHRSTSYNFIN首部长度保留(6位)16位窗口大小16位TCP校验和16位紧急指针选项数据0816243116位源端口16位目的端口16位UDP校验和数据UDP报文格式TCP报文格式16位UDP长度10端口号
传输层协议用端口号来标识和区分各种上层应用程序。HTTPFTPTelnetSMTPDNSTFTPSNMPTCPUDPIP数据包套接字8020/212325536916111TCP连接clientserverSYN(seq=a)SYN(seq=b,ack=a+1)ACK(seq=b+1)12断开TCP连接clientserverFIN(seq=a)ACK(seq=a+1)FIN(seq=b,ack=a+1)ACK(seq=b+1)13网络层协议概述网络接入层应用层传输层网络层IPARPRARPICMP14IP报文格式版本报文长度服务类型总长度标识符标志片偏移生存时间协议报头校验和源IP地址目的IP地址IP选项15ARP-地址解析协议需要的MAC地址?IP:/24MAC:00-E0-FC-00-00-11IP:/24MAC:00-E0-FC-00-00-12ARPRequest?ARPReply
对应的MAC:00-E0-FC-00-00-1216RARP-反向地址解析协议我的IP地址是什么?无盘工作站RARPServerRARPRequest?RARPReply你的IP地址是17ICMP协议B可达吗?ICMPEchoRequestICMPEchoReply我在。AB18网络层常见物理设备路由器19数据链路层数据链路层是OSI参考模型的第二层,在物理层根底上向网络层提供效劳数据链路层为物理链路上提供可靠的数据传输局域网的数据链路层协议有以太网、令牌环网等广域网数据链路层协议有PPP、HDLC、FrameRelay等20数据链路层功能帧同步功能过失控制功能流量控制功能链路管理功能1物理层2数据链路层4传输层3网络层5会话层7应用层6表示层21帧同步功能帧同步是指能够从接收到的比特流中明确地区分出数据帧的起始与终止的地方常见帧同步的方法有:字节计数法字符填充的首尾定界符法比特填充的首尾定界符法违法编码法22流量控制和链路管理流量控制功能不是只有数据链路层才提供流量控制功能是控制发送方发送数据的速率链路管理是指数据链路层连接的建立、维持和释放23LAN数据链路层标准IEEE802制定了系列局域网标准IEEE802.3:以太网IEEE802.4:令牌总线IEEE802.5:令牌环IEEE802.11:无线局域网IEEE802标准涵盖了物理层和数据链路层24WAN数据链路层标准WAN效劳通常由电信运营商提供WAN数据链路层标准包括:HDLCPPPX.25FrameRelay25数据链路层常见设备交换机26物理层物理层位于OSI参考模型的最底层,它直接面向实际承担数据传输的物理媒体(即信道)。物理层的传输单位为比特。物理层是指在物理媒体之上为数据链路层提供一个原始比特流的物理连接。物理层协议规定了与建立、维持及断开物理信道所需的机械的、电气的、功能性的和规程性的特性。其作用是确保比特流能在物理信道上传输。27物理层的功能为数据端设备提供传送数据的通路,数据通路可以是一个物理媒体,也可以是多个物理媒体连接而成.一次完整的数据传输,包括激活物理连接,传送数据,终止物理连接.传输数据.物理层要形成适合数据传输需要的实体,为数据传送效劳.一是要保证数据能在其上正确通过,二是要提供足够的带宽(带宽是指每秒钟内能通过的比特(BIT)数),以减少信道上的拥塞.传输数据的方式能满足点到点,一点到多点,串行或并行,半双工或者全双工,同步或异步传输的需要.28常见的物理层接口10M以太网接口100M以太网接口1000M以太网接口2910M以太网接口10Base-T目前使用最广泛的局域网标准之一使用双绞线作为物理传输介质10Base5曾经广泛应用于主干局域网使用粗同轴电缆作为物理传输介质10Base2使用细同轴电缆作为物理传输介质3010Base-T的物理介质3类双绞线4类双绞线5类双绞线超5类双绞线6类双绞线有屏蔽与非屏蔽之分均为8芯电缆双绞线的类型由单位长度内的绞环数确定315类双绞线的线序直连网线交叉网线Side1Side2Side112345678123456781=白/橙2=橙3=白/绿4=蓝5=白/蓝6=绿7=白/棕8=棕Side2Side1Side2Side1Side212345678123456781=白/橙2=橙3=白/绿4=蓝5=白/蓝6=绿7=白/棕8=棕1=白/橙2=橙3=白/绿4=蓝5=白/蓝6=绿7=白/棕8=棕1=白/绿2=绿3=白/橙4=蓝5=白/蓝6=橙7=白/棕8=棕32100M以太网接口100Base-TX物理介质采用5类以上双绞线网段长度最多100米100Base-FX物理介质采用单模光纤,网段长度可达10公里物理介质采用多模光纤,网段长度最多2000米快速以太网由IEEE802.3u标准定义331000M以太网接口1000Base-T物理介质采用5类以上双绞线,网段长度最多100米1000Base-F物理介质采用多模光纤,网段长度最多500米IEEE802.3z和802.3ab34设备连接方式351.2.2IP地址分类与子网划分36二进制与十进制的转化十进制总合为2558bit37二进制与十进制之间的转化+++++++例子:38IP地址的进制转化IP地址:字节〔8位〕●字节〔8位〕●字节〔8位〕●字节〔8位〕
11000000101010000000000100001011等于192●168●1●1139IP地址介绍IP地址唯一标示一台网络设备私有IP地址~55~55114440~55
~55
~55~55IP地址分类41特殊IP地址网络部分主机部分地址类型用途127any全“0”全“1”Any全“0”Any全“1”网络地址代表一个网段广播地址特定网段的所有节点环回地址环回测试广播地址本网段所有节点所有网络华为Quidway路由器用于指定默认路由42子网掩码介绍网络设备使用子网掩码〔subnetmasking〕决定IP地址中哪局部为网络局部,哪局部为主机局部。子网掩码使用与IP地址一样的格式。子网掩码的网络局部和子网局部全都是1,主机局部全都是0。缺省状态下,如果没有进行子网划分,A类网络的子网掩码为,B类网络的子网掩码为,C类网络子网掩码为。利用子网,网络地址的使用会更有效。对外仍为一个网络,对内部而言,那么分为不同的子网。43网络地址与子网掩码IP地址:子网掩码:网络地址:44子网掩码的表示方法IP地址子网掩码子网掩码比特数子网掩码表示255.255.255.24011111111111111111111111111110000
192.168.1.7110000001010100000000001000001118+8+8+4=28/2845网络地址的计算IP地址子网掩码网络地址(二进制)网络地址/28
255.255.255.24011111111111111111111111111110000
192.168.1.71100000010101000000000010000011111000000101010000000000100000000IP地址为:/1946主机数的计算主机数为:
2n可用主机数为:2n-2子网掩码N网络位主机位111111111111110000000000000047主机数计算举例IP地址为:该子网掩码二进制表示为:11111111,11111111,11111111,1111000028bits网络位4bits主机位主机总数为:24可用主机数为:24-248子网数计算举例IP地址为:该子网掩码二进制表示为:11111111,11111111,11111111,1111000028bits网络位4bits主机位子网总数为:28-4可用子网数为:28-4-249无子网编址无子网编址是指使用自然掩码,不对网段进行细分。比方B类网段,采用作为掩码。/16/16/1650带子网编址B类网段,,51子网规划举例例子:某公司分配到C类地址。假设需要20个子网,每个子网有5台主机,我们该如何划分?52变长子网掩码〔VLSM〕ISP通告53无类域间路由〔CIDR〕CIDR减少了路由表的规模,增了网络的可扩展性。InternetISP通告路由541.2.3常用网络测试工具PingTracert55PingPing是测试网络联接状况以及信息包发送和接收状况非常有用的工具,是网络测试最常用的命令。Ping向目标主机(地址)发送一个回送请求数据包,要求目标主机收到请求后给予答复,从而判断网络的响应时间和本机是否与目标主机(地址)联通。如果执行Ping不成功,那么可以预测故障出现在以下几个方面:网线故障,网络适配器配置不正确,IP地址不正确。如果执行Ping成功而网络仍无法使用,那么问题很可能出在网络系统的软件配置方面,Ping成功只能保证本机与目标主机间存在一条连通的物理路径。56Ping的使用命令格式: pingIP地址或主机名[-t][-a][-ncount][-lsize]参数含义:-t不停地向目标主机发送数据;-a以IP地址格式来显示目标主机的网络地址;-ncount指定要Ping多少次,具体次数由count来指定;-lsize指定发送到目标主机的数据包的大小。57Ping的举例测试本机与华为网站是否连接ping测试本机与华为网站的网络连接状况ping-n10000–l150058TracertTracert命令用来显示数据包到达目标主机所经过的路径,并显示到达每个节点的时间。命令功能同Ping类似,但它所获得的信息要比Ping命令详细得多,它把数据包所走的全部路径、节点的IP以及花费的时间都显示出来。该命令比较适用于大型网络。59Tracert举例测试本机到华为网站所经过的路径tracert601.3I/O流importjava.io.*;classIODemo{ publicstaticvoidmain(String[]args) { try { FileWriterfileWriter=newFileWriter("iotest.txt"); BufferedWriterbufWriter=newBufferedWriter(fileWriter); bufWriter.write("文件写入字符流"); bufWriter.newLine(); bufWriter.write("新一行"); bufWriter.flush(); fileWriter.close(); bufWriter.close(); System.out.println("iotest.txt文件写入成功\n"); System.out.println("iotest.txt内容:\n");
61FileReaderfileReader=newFileReader("iotest.txt"); BufferedReaderbufReader=newBufferedReader(fileReader);StringstrLine=null; do { strLine=bufReader.readLine(); System.out.println(strLine==null?"":strLine); }while(strLine!=null); fileReader.close(); bufReader.close(); System.out.println("iotest.txt内容完了"); } catch(IOExceptionex){ ex.printStackTrace();}}}621.4Java多线程在一个程序中,如果有一个或多个耗时很长的计算,在单线程程序中,每个计算要依次完成,一个计算要在完全结束后,其他计算才能进行,如下程序:63classdog{ publicvoidrun() { while(true) { System.out.println("adogisrunning!"); } }}classcat{ publicvoidrun() { while(true) { System.out.println("acatisrunning!"); } }}64classmouse{ publicvoidrun() { while(true) { System.out.println("amouseisrunning!"); } }}classmyThread{ publicstaticvoidmain(String[]aaa) { dogd=newdog(); d.run(); catc=newcat(); c.run(); mousem=newmouse(); m.run(); }
}65程序运行时,dog类的run方法一直在运行,其他类的方法得不到运行的时机。使用Thread类实现多线程:66classdogextendsThread{ publicvoidrun() { while(true) { System.out.println("adogisrunning!"); } }}classcatextendsThread{ publicvoidrun() { while(true) { System.out.println("acatisrunning!"); } }}67classmouseextendsThread{ publicvoidrun() { while(true) { System.out.println("amouseisrunning!"); } }}classmyThread{ publicstaticvoidmain(String[]aaa) { Threadt1=newdog(); t1.start(); Threadt2=newcat(); t2.start(); Threadt3=newmouse(); t3.start(); }}68Dog类方法、cat类和mouse类的方法都能得到执行注意不能这样实现classmyThread{ publicstaticvoidmain(String[]aaa) { dogd=newdog(); d.run(); catc=newcat(); c.run(); mousem=newmouse(); m.run(); } }69使用Runnable接口实现多线程:classdogimplementsRunnable{ publicvoidrun() { while(true) { System.out.println("adogisrunning!"); } }}classcatimplementsRunnable{ publicvoidrun() { while(true) { System.out.println("acatisrunning!"); } }}70classmouseimplementsRunnable{ publicvoidrun() { while(true) { System.out.println("amouseisrunning!"); } }}classmyThread{ publicstaticvoidmain(String[]aaa) { Threadt1=newThread(newdog()); t1.start(); Threadt2=newThread(newcat()); t2.start(); Threadt3=newThread(newmouse()); t3.start(); }}71使用内部类实现多线程classST{ publicvoidrun() { Threadt1=newThread(newdog()); t1.start(); Threadt2=newThread(newcat()); t2.start(); Threadt3=newThread(newmouse()); t3.start(); } classdogimplementsRunnable { publicvoidrun() { while(true) { System.out.println("adogisrunning!"); } } }72
classcatimplementsRunnable { publicvoidrun() { while(true) { System.out.println("acatisrunning!"); } } } classmouseimplementsRunnable { publicvoidrun() { while(true) { System.out.println("amouseisrunning!"); } } }}73classmyThread{ publicstaticvoidmain(String[]aaa) { STt=newST(); t.run(); }}线程同步问题synchronized方法741.5JDBC编程Java包java.sql1.注册驱动2.实例连接3.实例statement4.执行statement5.实例resultset75importjava.sql.*;interfaceDB{ ConnectiongetCon(); StatementgetSTM(); voidDisplayData();}classmyDBimplementsDB{ publicConnectiongetCon() { try { "); Stringstrurl="jdbc:odbc:driver={MicrosoftAccessDriver(*.mdb)};DBQ=books.mdb";Connectionconn=DriverManager.getConnection(strurl); returnconn; } catch(Exceptione) { System.out.println(0); } returnnull; }
76publicStatementgetSTM() { try { Connectionc=getCon(); Statements=c.createStatement(); returns; } catch(Exceptione) { System.out.println(1); } returnnull; }
77classTest{ publicstaticvoidmain(String[]args) { DBdb=newmyDB(); db.DisplayData(); }}78publicvoidDisplayData() { try { Statementss=getSTM(); ResultSetrs=ss.executeQuery("select*fromstudent"); while(rs.next()){System.out.print(rs.getString(1)+""); System.out.print(rs.getString(2)+""); System.out.print(rs.getString(3)+""); System.out.println(rs.getString(4));} } catch(Exceptione) { System.out.println(2); } }}791.6JavaGUI和Java事件import.*;importjavax.swing.*;classJav
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024版加工承揽合同标的质量控制及验收标准补充协议3篇
- 乡镇集体建筑企业的合同管理问题
- 聘请电影电视剧导演合同书
- 《语文知识体系》课件
- 二零二四年度水利工程混凝土供应合同3篇
- 二零二四年度研发成果转化协议5篇
- 民间借贷担保合同书2024年范本
- 房屋院落租赁合同
- 2024版个体工商户加盟协议书2篇
- 2024年度云计算服务与数据中心运营协议
- 三相鼠笼异步电动机的工作特性实验报告
- 工程变更表(标准模版)
- 机电安装工程质量通病防治措施doc
- 肌力评估ppt课件
- 频谱仪检定规程
- 上期开特下期出特公式
- 桥台计算-承台桩基
- 光伏发电验收资料
- 半导体制造厂紧急应变程序
- 装载机XPI推进报告综合
- 物业管理保安方案
评论
0/150
提交评论