Java网络编程
来源:互联网 发布:全球人工智能市场规模 编辑:程序博客网 时间:2024/05/20 10:56
网络协议
Ip地址 InetAddress类
InetAddress ia = InetAddress.getLocalHost();
InetAddress ia = InetAddress.getByName("www.baidu.com");
InetAddress[] ias = InetAddress.getAllByName("www.baidu.com");
System.out.println(ia.getHostAddress());//
传输协议
UDP协议 :面向无连接
1、将数据及源和目的封装成数据包中,不需要建立连接
2、每个数据包的大小限制在64k内
3、因无连接,所以是不可靠协议
4、不需要建立连接,速度快
TCP协议 : 面向连接
1、建立连接,形成传输数据的通道
2、在连接中进行大数据量传输
3、通过三次握手完成连接,是可靠协议
4、必须建立连接,效率会稍低
网络编程比较重要的类
1、socket就是为网络服务提供的一种机制
2、通信的两端都有Socket
3、网络通信其实就是Socket通信
4、数据在两个Socket间通过IO传输
UDP传输:
发送需求:通过UDP传输方式,将一段文字数据发送出去
思路:
1、建立UDPSocket服务
2、提供数据,并将数据封装到数据包中
3、通过socket服务的发送功能,将数据包发送出去
4、关闭资源
接收需求:定义一个应用程序,用于接收UDP协议传输的数据
1、定义udpsocket服务。定义接收端的时候,通常会监听一个端口。其实就是给这个接收网络应用程序定义数字标识
2、定义一个数据包,因为要存储接收到的字节数据。
因为数据包对象中有更多功能可以提取字节数据中的不同信息。
3、通过socket服务的receive方法将接收到的数据存入定义好的数据包中
4、通过数据包对象的特有功能。将这些不同的数据取出。
5、关闭资源
TCP传输
1、Socket和ServerSocket
2、建立客户端和服务器端
3、建立连接后,通过socket中的IO流进行数据的传输
4、关闭socket
同意,客户端与服务器端是两个独立的应用程序
当客户端跟服务端建立socket连接后,则输入、输出流就已经创建成功
TCP客户端
分析:
* 通过查阅socket对象,发现在建立对象是,就可以去连接指定主机
* 因为tcp是面向连接的,所以 在建立socket服务时,形成通路后,在该同道进行数据的传输
* 步骤:
* 1、创建socket服务对象,并指定要连接的主机和端口
* 2、获取socket流中的输出流,将数据写入到该流中,通过网络发送给服务器端
* 3、获取socket流中的输入流,将服务器端反馈的数据获取到
TCP服务端
* 1、建立服务端的socket端口,serverSocket(Port) 监听端口
* 2、获取连接过来的客户端对象
* 通过serverSocket的 accept()方法。所以这个方法阻塞式的。没有连接就会等。
* 3、客户端如果发送过来数据,那么服务端要使用对应的客户端对象,并获取到该客户端的读取发过来的数据
* 4、关闭(一般服务器是不关闭的)
TCP文本传输需要注意的是
一、如果传输的是文本内容 , 就直接用Reader/Writer 体系比较方便
二、如果传输的是其他文件内容:InputStream/OutputStream。需要注意的问题如下:
1、如果操作的是基本数据类型,可以使用DataInputStream/ DataOutputStream 来操作
2、如果使用了带缓存的流,则必须要记住要flash(),将流中的数据强行写入服务器中的读取流
3、当客户端把文件内容全部写入到网络流中后,就要关闭网络写入流,方法:socket.shutdownOutput();同理服务器端读取完文件内容后,也必须关闭读取客户端的方法:socket.shutdownInput();。如果不关闭,则服务器端一直会等待到结尾位置
4、服务器端流关闭顺序:跟文件相关的资源先关闭,然后关socket.close()。最后是serverScoket.close();
URLConnection 、 URL 、 SocketAddress 也是比较重要的类
URL类
封装了解析地址的类
能直接获取 ip 、Port、 资源路径
URLConnection类
封装了请求、响应的信息
可以获取响应的流,也可以获取发送流
URL url = new URL(path);
URLConnection con = url.openConnection();
InputStream in = con.getInputStream();//其实就是获取Socket对象的方法
OutputStream out = con.getOutputStream();
SocketAddress 类
其子类:InetSocketAddress , 类实现 IP 套接字地址(IP 地址 + 端口号)。
封装了IP 和 端口
- 【网络编程】JAVA网络编程
- java网络编程:网络基本概念
- Java网络编程-UDP编程
- Java 高层网络编程
- Java网络编程2
- Java网络编程3
- Java网络编程4
- Java网络服务器编程
- java网络编程1
- java网络编程2
- JAVA网络编程
- Java网络服务器编程
- java网络编程
- Java 高层网络编程
- Java 高层网络编程
- Java网络服务器编程
- Java网络编程
- JAVA网络编程
- 黑马程序员-for remove除去相同元素
- oracle 监控函数索引
- centos下Nginx+tomcat整合安装配置
- hdu 1407 测试你是否和LTC水平一样高
- 简单易懂堆排序
- Java网络编程
- iOS 中比较俩个UIimage是否相同
- ubuntu 设置网卡为混杂模式 以及网络配置命令
- zoj 3612 Median (splay)
- 如何让快速在Mac下安装OpenCV
- 如何更改Linux yum源?
- Fortran随机整数的生成
- 补码的计算【转】
- HDU 4417 离线线段树