------<a href="http://www.itheima.com" target="blank">Java培训、Android培训、iOS培训、.Net培训</a>、期待与您交流! -------
网络编程就是: IO+网络
所有的通过介质的形势,能够互相通讯,网络就行程了。
如果是同一个模型,就可以连接上。网络七层(OSI参考模型):物理(介质,光纤),数据链路(网卡mac地址),网络 (路由器,模块指的是数据传输的路径),传输(TCP UDP端口号),会话(发起接受请求),表示(解释,加密等转化成课识别的东西),应用(终端应用,FTP,QQ,WEB)
TCP/IP参考模型:主机至网络层,网际层,传输层,应用层
实际开发在应用层和传输层使用
应用层到数据链路层,不断包装信息,在物理层为二进制,进入对方应用层不断拆包
互联网主机名定义,例如;mythinkqqq.edu. 商业组织com 中国cn 主机名是网址,
IP与主机名对应,以IP区分主机名 在c:\system32\drivers \etc\
款低啊提供声提供了域名解析,称为DNS域名解析服务器,是通过协议属性中配置,如果没有配置,先走dns ,联通的宽带可以陪电信的DNS
在任何一台计算机中安装DNS服务器软件,把列表配到里面,其他配置此DNS,这台电脑就可以完成解析。
127.0.01是本机地址,封广告 127.0.01 www.game.com.cn 屏蔽序列号的校验,通过360的地址列表
主机之间的通讯完成后,每台主机有很多不同的影城程序,如何实现应用程序的通讯?
通过端口号来识别不同的一个用程序 端口1000一下用不上是系统使用 网卡是物理端口,软件应用程序的数字标识是逻辑端口
具体在360网络连接查看 1024-65535可用
传输协议
发送后,以什么方式通讯?
网络层中以什么传输?TCP传输控制协议,UDP数据报文包协议
UDP:面向无连接,发快递,兵你不知道地址存在与否,不关心对方是否在,速度较快。类似飞秋等及时聊天通讯
TCP:先保证对方存在,连接畅通。通过三次握手,更可靠。类似打电话
05完
socket
socket可以理解为插座,港口。编写网络程序,先有插座。分别专门对TCP和UDP。网络编程也称为soket编程
在不同的语言中体现的对象不一样。基于网络的IO流。
1 首先简历UDP的socket.它具备发送或者接收功能
2 将数据封装到数据包中,数据包对象是DatagramPacket
3 使用socket对象的send方法将数据包发送出去
4 关闭资源
DatagramSocket ds = new DatagramSocket(); String text="hello udp"; byte[] buf=text.getBytes(); // 将字节封装到数据包中 DatagramPacket dp = new DatagramPacket(buf, buf.length, InetAddress.getByName("192.168.1.223"), 8080); ds.send(dp); ds.close();
定义接收端:
1 插座服务,接收端定义端口,不然接收不到数据
2 接收数据,存储到数据包中。
3 定义数据包
4 获取内容:发送端的ip,端口号,数据
5 关闭资源
DatagramSocket ds = new DatagramSocket(8080); byte[] buf=new byte[4096]; DatagramPacket dp = new DatagramPacket(buf, buf.length); ds.receive(dp); // 接收数据 String ip =dp.getAddress().getHostAddress(); int port=dp.getPort();
IP分为网络位和主机位
192.168.1.3 网络位 主机位
子网掩码:255.255.255.0 被1掩盖的都是网络位,可以有200多主机
255是广播,没有这台主机,会发送给网段中所有的主机
TCP
socket 和serverSocket 流不需要创建,网络连接通自动会有,直接获取
1 建立TCP的客户端scoket,明确服务端的地址和端口
2 如果通道建立成功就会出席那socket IO 流
获取socket输出流,把数据发送到服务端
3 通过socket将数据发送
4 关闭流资源
如果没有连接,什么都不会做。
服务端:
/* * 需求:获取客户端的数据并显示在屏幕上。 思路: 1,创建服务端的socket。明确端口,监听一个端口。 * 2,服务端只要获取到连接过来的客户端就可以和指定的客户端通信了。 3,通过获取客户端的读取流对象读取客户端发来的数据。 4,并显示屏幕上。 */ // 1,创建服务端的socket。明确端口,监听一个端口。 ServerSocket ss = new ServerSocket(10003); while (true) { // 2,服务端只要获取到连接过来的客户端就可以和指定的客户端通信了。 Socket s = ss.accept(); String ip = s.getInetAddress().getHostAddress(); System.out.println(ip + ".....connected"); // 3,通过获取客户端的读取流对象读取客户端发来的数据。 InputStream in = s.getInputStream(); // 4,并显示屏幕上。 byte[] buf = new byte[1024]; int len = in.read(buf); String text = new String(buf, 0, len); System.out.println(text); // 5,关闭资源。 s.close(); } 客户端: /* * 需求:通过tcp传输将数据发送给服务器。 * 思路: * 1,建立tcp的客户端socket。明确服务端的地址和端口。 * 2,如果通道建立成功就会出现socket io流。 * 客户端需要做的就获取socket流的中输出流将数据发送目的地服务端。 * 3,通过socket输出流将数据发送。 * 4,关闭资源。 */ // 1,建立tcp的客户端socket。明确服务端的地址和端口。 Socket s = new Socket("192.168.1.223",10003); // 2,如果通道建立成功就会出现socket io流。 // 客户端需要做的就获取socket流的中输出流将数据发送目的地服务端。 OutputStream out = s.getOutputStream(); // 3,通过socket输出流将数据发送。 out.write("hello tcp 来了!".getBytes()); // 4,关闭资源。 s.close();