黑马程序员_网络编程
来源:互联网 发布:sqlserver怎么下载 编辑:程序博客网 时间:2024/06/05 18:08
八 网络编程
概述:
1.1网络通讯要素
IP地址:网络中设备的标识;
端口号:用于标识进程的逻辑地址;
传输协议:通讯的规则,传输的协议。
1.2网络模型
OSI模型,TCP/IP模型
1.3OSI模型
应用层,表示层,回话层,传输层,网络层,数据链接层,物理层。
1.4TCP/IP模型
应用层,传输层,网际层,主机到网络层
1.5网络编程是在网际层和传输层,Java web 是在应用层。
1.6IP地址
IP地址是网络中额表示,不易记忆,可用主机名,本地回环地址为:127.0.0.1;主机名为localhost
端口号:用于标识进程的逻辑地址,不同进程的标识。
传输协议:通讯的规则,常见的协议有:UDP,TCP
1.7IP地址类
IP地址类是InetAdress类,此类表示互联网协议的地址。
实例化:由于InetAdress类中没有构造函数,其中有获取该类对象的方法。
InetAdress ia=InetAdress.getLocalHost();
其中的常见方法:getlocalhost();
getHostAdress();获取IP地址字符串
getHostName();获取IP地址的主机名
Inetadress getByName();在给定主机名的情况下确定主机的IP地址。
1.8TCP和UDP
UDP:将数据及源和目的封装成数据包,不需要建立连接;
每个数据报的大小限制在64k内;
因无连接,是不可靠协议;
不需要建立连接,速度快。
TCP:建立连接,形成传输数据的通道;
在连接中进行大数据量传输;
通过三次握手完全连接,是可靠协议;
必须建立连接,效率会稍低。
1.9Socket
Socket是为网络服务提供的一种机制;
通信的两端都有Socket;
网络通信其实就是Socket间的通信;
数据在两个Socket间通过IO传输。
1.10UDP传输
发送端:
DatagramSocket类和DatagramPacket类
DatagramSocket ds=new DatagramSocket(8888);创建数据报套接字并将其绑定到本地主机上的指定端口。
byte【】 but=“sadfhwregfklfjkoqwe”.getbytes();
DatagramPacket dp=new DatagramPacket(but,but.length,"192.168.0.1",9999);构造数据报包,用来将长度为but。length的包发送到指定主机上的指定端口
ds.send(dp);
ds.close();
接收端:
DatagramSocket ds=new DatagramSocket(10000);创建数据套接字并将其绑定到本地主机上的指定端口。
byte[] buf=new byte[1024];
DatagramPacket dp=new DatagramPacket(buf,buf.length)构造数据报包,用来接收长度为buf.length的数据报。
ds.receive(dp);
ds.close();
1.11键盘录入方式数据
其实只是换一些数据或添加一些数据:
发送端是读:
BufferedReader bufr=new BufferedReader(new InputStreamReader(System.in));
String line=null;
while((line=bufr.readline())!=null)
{
if(886.equals(line))
break;
}
剩下的就一样了,就是改变了一些标识符。
接收端:
换成了IO流中的写部分。
1.12聊天程序
聊天程序既有接收数据部分,还有发送数据的部分。因此,需要同时执行,就需要用到多线程了。
其实,聊天程序是两个线程同时进行,一个发送数据,一个接收数据。
1.13TCP传输
Socket类与ServerSocket类
建立客户端和服务器端,建立连接后,通过Socket中的IO流进行数据的传输,然后关闭资源。
Socket类:
此类实现了客户端套接字,是两台机器通信的端口。
客户端:
Socket s=new Socket(“”,10003);创建一个流套接字并将其连接到指定主机上的指定端口。
OutputStream o=s.getOutputStream();返回此套接字的输出流。
o.write(“”.getbytes());
s.close();
服务器端:
ServerSocket ss=new ServerSocket(10003);
Socket s=ss.accept();
inputStream in=s.getInputStream();
byte[] buf=new byte[1024];
int len=in.read(but);
s.close();
ss.close();
- 黑马程序员_网络编程
- 黑马程序员_网络编程
- 黑马程序员_网络编程
- 黑马程序员_网络编程
- 黑马程序员_网络编程
- 黑马程序员_网络编程
- 黑马程序员_网络编程
- 黑马程序员_网络编程
- 黑马程序员_网络编程
- 黑马程序员_网络编程
- 黑马程序员_网络编程
- 黑马程序员_网络编程
- 黑马程序员_网络编程
- 黑马程序员_网络编程
- 黑马程序员_网络编程
- 黑马程序员_网络编程
- 黑马程序员_网络编程
- 黑马程序员_网络编程
- LeetCode题解:Minimum Depth of Binary Tree
- JavaScript中的其他对象
- 结构体以及共用体与枚举类型
- EF资料链接
- 黑马程序员_Java高新技术
- 黑马程序员_网络编程
- uva 409 Excuses, Excuses!
- 1's complement and 2's complement Representation
- java 接口 实现和继承关系
- Sprite Kit Actions(一)
- 4.18 st_atime、st_mtime和st_ctime成员-文件时间属性
- 什么时候使用接口?什么时候使用抽象?选择Java接口还是抽象类
- 权限
- sed命令