------<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();