黑马程序员 -- Java基础学习(9)

来源:互联网 发布:塔布数据 编辑:程序博客网 时间:2024/06/05 12:42

------- android培训、java培训、期待与您交流! ----------


网络编程

概述

步骤找到对方IP数据要发送到对方指定的应用程序上,为了表示这些程序,用数字进行标示  该数字叫做端口/逻辑端口,一个应用程序可以对应多个定义通信规则,成为协议  国际组织定义的通用协议TCP/IP,广域/局域网通用  IPX/SPX/NetBIOS 局域网  为了安全,很多组织或单位都有自己特定的协议网络模型:层次的细致划分OSI参考模型:物理层,数据链路层,网络层,传输层,会话层,表示层,应用层TCP/IP参考模型:主机至网络层,网际层(IP),传输层(TCP/UDP),应用层(应用,表示,会话)(HTTP/FTP)JavaWeb开发:应用层  网络编程:网际层,传输层网络通讯要素IP地址端口:数字 0~65535  0~1024:系统程序保留  web:80传输协议

IP

  IPDemo.java不易记忆,可用主机名  localhost 127.0.0.1 本地回环地址InetAddress 描述IP地址的类InetAddress i = InetAddress.getLocalHost();  UnknownHostExceptiongetHostName()InetAddress is = InetAddress.getByName(“***.***.***.***”);  如果地址和对应的主机名没有在网络上,则解析不成功,名字还是IP地址有可能不止一个主机地址 getAllByName()

TCPUDP

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

Socket 套接字

通信的两端就是Socket,数据在Socket间通过IO传输UDP Socket    UDPDemo.javaDatagramSocket 数据DatagramPacket 数据报包发送一段文字数据建立UDPSocket服务提供数据,将数据封装到数据包中通过Socket服务的发送功能发送关闭资源接收方定义UDPSocket服务,通常会监听一个端口定义数据包用于存储接收到的字节数据  数据包中有不同方法可以提取不同数据信息通过Socket服务的receive方法存入数据  receive()是阻塞式方法通过数据包对象的特有功能提取信息getAddress().getHostAddress()getData()getLength()getPort()关闭资源用键盘输入    UDPDemo2.java  BufferedReader br = new BufferedReader(new InputStreamReader(System.in));192.168.1.255 广播地址  192.168.1.0 网络地址  聊天程序    ChatDemo.java  因为收发动作不一致所以要定义两个run方法,而且要封装到不同的类中TCP Socket    TCPDemo.java    TCPDemo2.java客户端:Socket对象建立时就可连接指定主机建立Socket时要求有服务端存在并连接成功  连接后会有通路流进行数据传输步骤创建Socket,指定目的主机和端口获取输出流    getOutputStream()输出获取输入流,读取服务端反馈关闭客户端资源服务端:ServerSocket建立ServerSocket服务,监听一个端口accept方法获取连接过来的客户端对象,阻塞式使用对应客户端的读取流读取发过来的数据关闭服务端(可选)练习:文本转换服务器,服务端把文本转换为大写返回给客户端    TransTextDemo.java客户端IO的操作规律思考源:键盘录入目的:网络输出流文本数据:字符流提高效率:缓冲步骤建立服务获取键盘录入发送数据,需要刷新缓冲,需要发送回车符,因为readLine()方法需要接收回车获取返回的大写数据关闭资源  over时,退出循环,s.close()运行,返回-1;服务器端收到-1也退出循环TCP复制文件    UploadText.java需要结束标记自定义结束标记:不好,如果文件中如果有重复字符会提前结束  out.println(“over”);自定义时间标记  long l = System.currentTimeMillis();  dos.writeLong(l);Socket自带方法:s.shutDownOutput()  相当于给流中写入一个结束标记-1
0 0