java网络编程深入研究_第1页
java网络编程深入研究_第2页
java网络编程深入研究_第3页
java网络编程深入研究_第4页
java网络编程深入研究_第5页
已阅读5页,还剩13页未读 继续免费阅读

下载本文档

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

文档简介

1、网络编程三要素:a : ip地址b:端口c:协议举例:我想和林青霞说话了。肿么办?a :我要找到林青霞。b:对也说话,要对耳朵说。c:我说什么呢?”1 love you" 但是,她没学过英语,听不懂。我没必要说英语,说汉语就可以了:我爱你ip地址:网络中计算机的唯一标识。计算机只能识别二进制的数据,所以我们的ip地址应该是一个二进制的 数据。但是呢,我们配置的ip地址确不是二进制的”为什么呢?ip : 192168.1.100换算:11000000 10101000 00000001 01100100假如真是:11000000 10101000 00000001 01100100的话

2、。我们如果每次再上课的时候要配置该ip地址,记忆起来就比较的麻烦。 所以,为了方便表示ip地址,我们就把ip地址的每一个字节上的数据换 算成十进制,然后用分开来表示:”点分十进制”ip地址的组成:网络号段+主机号段a类:第一号段为网络号段+后三段的主机号段个网络号:256*256*256 = 16777216b类:前二号段为网络号段+后二段的主机号段个网络号:256*256 = 65536c类:前三号段为网络号段+后一段的主机号段个网络号:256ip地址的分类:a 类 1.0.0.1-127.255.255.254(2)10xxx是私有地址(私有地址就是在互联网上不使用,而被用在局域网络中的地

3、址)(2) 127xxx是保留地址,用做循环测试用 的。b 类 128.0.0.1-191.255.255.254172.16.0.0- 172.31.255.255是私有地址。169.254.x. x是保留地址。c类 192001一223255.255.254192.168 xx是私有地 址d 类 224.0.0.1-239.255.255.254e 类 240.0.0.1-247.255.255.254两个dos命令:ipconfig查看本机ip地址ping 后1:1跟辽地址。测试本机与指定的1e地址间的通信是否有问题特殊的ip地址:127.0.0.1回环地址(表示本机)x.x.x.255

4、广播地址x.x.x.0网络地址端口号:正在运行的程序的标识。有效端口 : 0-65535 ,其中0-1024系统使用或保留端口。协议:通信的规则udp :把数据打包 数据有限制 不建立连接 速度快 不可靠tcp :建立连接通道 数据无限制 速度慢可靠举例:udp :发短信tcp :打电话1:网络编程(理解)(1)网络编程:用java语言实现计算机间数据的信息传递和资源共享(2) 网络编程模型(3) 网络编程的三要素a:ip地址a:点分十进制b:ip地址的组成c:ip地址的分类d:dos命令e:ln et addressb:端口是应用程序的标识。范围:065535。其中0-1024不建议使用。c

5、协议udp:数据打包,有限制,不连接,效率高,不可靠tcp:建立数据通道,无限制,效率低,可靠socket机制a:通信两端都应该有socket对象b:所有的通信都是通过socket间的10进行操作的(4) udp协议发送和接收数据(掌握自己补齐代码)发送:创建udp发送端的socket对象创建数据并把数据打包发送数据释放资源接收:创建udp接收端的socket对象创建数据包用于接收数据接收数据解析数据包释放资源(5) tcp协议发送和接收数据(掌握自己补齐代码)发送:创建tcp客户端的socket对象获取输出流,写数据释放资源接收:创建tcp服务器端的socket对象监听客户端连接获取输入流,

6、读取数据案例:a:udpb:tcp释放资源a:最基本的udp协议发送和接收数据b:把发送数据改进为键盘录入c:个简易聊天小程序并用多线程改进a:最基本的tcp协议发送和接收数据b:服务器给出反馈c:客户端键盘录入服务器控制台输出d :客户端键盘录入服务器写到文本文件e:客户端读取文本文件服务器控制台输出f :客户端读取文本文件服务器写到文本文件g:上传图片h:多线程改进上传文件scoket通信原理sodeti sodetssodetfiit.口socket*网个sod鏑細黑$值.itwiaa3socketitutab3socket (ipft«q)(】pw审口)sow仪下通过诡(翔t

7、cp协议发送和接受数据setlnputstreasirvutstreuoitputstreaa(etoutputstreoutputstreai s" gwritechellojcp.irvutstreas is (.get input st rea>0; byte) byi s new byte1024, int len = ixem(byf).rinc str = new string(hrs.o»len).serversodcet ft = new serversocket (8888), socket s - w. accept 0, /bitg户和serve

8、rso-:ketmti:8888et irnew socket cl屹血 12 $2: 8888),(etoitputudp协议发送和接收数据tt4r耙ome凋象mmm并罰初能:-101010101010、ip: 192.168.12.hello,吠糅了网络模型图解网络应腮帛网卿峦10ft.多駅脱.会话层网络层mx/bhooiioooo】koikco1qq1多次启动接收端import java.i 0oexception;import j ava. net. datag ram packet;import .datagramsocket;/*多次启动接收端:* .bindexception:

9、address already in use: cannot bind* 端口被占用。*/public class receivedemo public static void main(string args) throws loexception /创建接收端的socket对象datagramsocket ds = new datagramsocket(12345);while (true) /创建一个包裹byte bys = new byte1024;datagrampacket dp = new datagrampacket(bys, bysength);/接收数据ds.receive

10、(dp);/解析数据string ip = dp.getaddress().gethostaddress();string s = new string(dp.getdata(), 0, dp.getlength();system.out.println(”from ” + ip + " data is : ” + s);/释放资源/接收端应该一直开着等待接收数据,是不需要关闭/ ds.close();2数据来自键盘录入import java.io.bufferedreader;import java.i0oexception;import java.i on putstreamre

11、ader;import .datagrampacket;import .datagramsocket;import .lnetaddress;/*数据来自于键盘录入*键盘录入数据要自己控制录入结束。*/public class senddemo public static void main(string args) throws loexception /创建发送端的socket对象datagramsocket ds = new datagramsocket();/封装键盘录入数据bufferedreader br = new bufferedreader(newin putstreamre

12、ader(system.in);string line = null;while (line = br.readline() != null) if (n886".equals(line) break;/创建数据并打包byte bys = line.getbytes();/ datagram packet dp = new datag ram packet (bys, bysength,/ lnetaddress.getbyname(h192.168.12.92n), 12345);datag ram packet dp = new datagrampacket(bys, bysen

13、 gth,in etaddress.getbyname("192.168.12.255m), 12345);/发送数据ds.send(dp);/释放资源ds.close();3单设计模式package cn.itcast_o1;import .lnetaddress;import .unknownhostexception;over/*如果一个类没有构造方法:* a:成员全部是静态的(math,arrays,collections)* b:单例设计模式(runtime)* c:类中有静态方法返回该类的对象(inetaddress)* class demo * private demo

14、()* public static demo getxxx() * return new demo();* * *看inetaddress的成员方法:* public static inetaddress getbyname(string host):根据主机名或者 ip地址的字符串 表示得到ip地址对象*/public class inetaddressdemo public static void main(string args) throws unknownhostexception / public static inetaddress getbyname(string host)/

15、 inetaddress address = inetaddress.getbynamec'liuyi");/ inetaddress address = inetaddress.getbyname("192.168.12.92");inetaddress address = inetaddress.getbyname(n192.168.12.63"):/获取两个东西:主机名,ip地址/ public string gethostname()string name = address.gethostname();/ public string g

16、ethostaddress()string ip = address.gethostaddress();system.out.pri ntln(name + "” + ip);4udp协议接受数据package cn.itcast_02;import java.i 0oexcepti on;import .datagrampacket;import .datagramsocket;import .lnetaddress;/*udp协议接收数据:* a:创建接收端socket对象* b:创建一个数据包(接收容器)* c:调用socket对象的接收方法接收数据沃d:解析数据包,并显示在控

17、制台* e:释放资源*/public class receivedemo public static void main(string args) throws loexception /创建接收端socket对象/ datagramsocket(int port)datagramsocket ds = new datagramsocket(10086);/创建一个数据包(接收容器)/ datagrampacket(byte buf, int length)byte bys = new byte1024;int length = bysength;datagram packet dp = ne

18、w datagrampacket(bys, length);/调用socket对象的接收方法接收数据/ public void receive (datag ram packet p)ds.receive(dp); / 阻塞式/解析数据包,并显示在控制台/获取对方的ip/ public inetaddress getaddress()inetaddress address = dp.getaddress();string ip = address.gethostaddress();/ public byte getdata():获取数据缓冲区/ public int getlength():获

19、取数据的实际长度 byte bys2 = dp.getdata();int len = dp.getlength();string s = new string(bys2, 0, len);system.out.println(ip + ”传递的数据是:” + s);/释放资源ds.close();5 i net address的成员方法 package cn.itcast_01;import netaddress;import .unknownhostexception;over/*如果一个类没有构造方法:* a:成员全部是静态的(math,arrays,collections)* b:单例

20、设计模式(runtime)* c:类中有静态方法返回该类的对象(inetaddress)class demo private demo()public static demo getxxx() *return new demo();*看inetaddress的成员方法:* public static inetaddress getbyname(string host):根据主机名或者 ip 地址的字符串 表示得到ip地址对象*/public class inetaddressdemo public static void main(string args) throws unknownhost

21、exception / public static inetaddress getbyname(string host)/ inetaddress address = inetaddress.getbyname(',liuyin);/ inetaddress address = inetaddress.getbyname(h192.168.12.92");inetaddress address = inetaddress.getbyname("192.168.12.63h):/获取两个东西:主机名,ip地址/ public string gethostname()s

22、tring name = address.gethostname();/ public string gethostaddress()string ip = address.gethostaddress();system.out.pri ntln(name + ” + ip);6udp协议接受数据package cn.itcast_02;import java.i0oexception;import j ava. net. datag ram packet;import .datagramsocket;import n etaddress;/*udp协议接收数据:*a:创建接收端socket对象* b:创建一个数据包(接收容器)* c:调用socket对象的接收方法接收数据* d:解析数据包,并显示在控制台* e:释放资源*/pu

温馨提示

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

评论

0/150

提交评论