网络编程1

 


 

网络模型

OSI参考模型      TCP/IP参考模型
 
应用层                   应用层
表示层
会话层
传输层                  传输层
网络层                  网际层
数据链路层     主机至网络层
物理层

网络通讯要素

IP地址
    网络中设备的标识
    不易记忆,可用主机名
     本地回环地址:127.0.0.1 主机名:localhost
端口号
     用于标识进程的逻辑地址,不同进程的标识
     有效端口:0-65535 其中0-1024系统使用或保留端口
传输协议
    通讯的规则
     常见的协议:TCP UDP

IP地址     InetAddress

InetAddress ia = InetAddress.getLocalHost();  //获得本机的IP ,返回IP对象

InetAddress ia = InetAddress.getByName("www.baidu.com");

ia.getHostName(); //获得IP对象的主机名称    

ia.getHostAddress(); //获得IP对象的IP地址

TCP和UDP

UDP
将数据及源和目的封装成数据包中,不需要建立连接
每个数据包的大小限制在64K内
因为无连接,是不可靠协议
不需要建立连接,速度快
TCP
建立连接,形成传输数据的通道
在连接中进行大量的数据传输
通过三次握手完成连接,是可靠协议
必须建立连接,效率会稍低

Socket

Socket就是为网络服务提供的一种机制

通讯的两端都有Socket

网络通信其实就是Socket间的通信

数据在两个Socket间通过IO传输

UDP传输

发送端

网络编程1
接收端
网络编程1
 键盘录入
就是在发送端加入流 BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
每录入一行br.readLine() 将其转为字节数组,装入数据包确定目的地发送send
 
TCP的传输
客户端
网络编程1
服务端
网络编程1
需求:建立一个文本转换服务器。
客户端给服务端发送文本,服务单会将文本转成大写在返回给客户端。
而且客户度可以不断的进行文本转换。当客户端输入over时,转换结束。
分析:
客户端:
既然是操作设备上的数据,那么就可以使用io技术,并按照io的操作规律来思考。
源:键盘录入。
目的:网络设备,网络输出流。
而且操作的是文本数据。可以选择字符流。
步骤
1,建立服务。
2,获取键盘录入。
3,将数据发给服务端。
4,后去服务端返回的大写数据。
5,结束,关资源。
都是文本数据,可以使用字符流进行操作,同时提高效率,加入缓冲。
 
s.shutdownOutput();//关闭客户端的输出流。相当于给流中加入一个结束标记-1.
关于阻塞式方法
要明确它们之间的关系,将关系理清,在结束是注意要有结束标记