1.TCP和UDP协议的区别?
UDP:不可靠的面向无连接协议,发送端和接收端不建立逻辑连接,不能保证数据的完整性,因此在传输重要数据时不建议使用UDP协议
TCP:可靠的面向连接的协议,可以保证传输数据的安全
传输数据之前,在发送端和接收端建立逻辑连接,然后再传输数据
==连接的时候有三次握手==
请求:客户端发送给服务器端的内容
响应:服务器返回给客户端的内容
2.什么是三次握手?
在TCP连接中必须要明确客户端与服务器端,由客户端向服务端发出连接请求,每次连接的创建都需要经过“三次握手”
-三次握手:TCP协议中,在发送数据的准备阶段,客户端与服务器之间的三次交互,以保证连接的可靠
第一次握手,客户端向服务器端发出连接请求,等待服务器确认
第二次握手,服务器端向客户端回送一个响应,通知客户端收到了连接请求
第三次握手,客户端再次向服务器端发送确认信息,确认连接
3.网络编程三要素都是什么?
ip:就是设备的标识,即确定连接哪台计算机
端口:就是应用程序的标识,即确定连接哪个程序
协议:计算机网络中,连接和通信的规则,即确定连接的格式等
4.请描述一次文件上传的流程?
UDP编程:
发送数据
创建一个DatagramSocket 使用无参构造器
DatagramSocket socket = new DatagramSocket()
创建数据包,包含了我们要发送的数据 DatagramPacket(内容,内容长度,主机,端口)
byte[] bs = "数据".getBytes();
DatagramPacket dp = new DatagramPacket(bs,bs.length,InetAddress("接收端的ip地址"),10086)
通过socket将数据包发送出去 send
socket.send(dp);
释放关闭socket
socket.close();
---
接收数据
创建一个DatagramSocket 时刻监听某一个端口号
DatagramSocket socket = new DatagramSocket(10086);
创建数据包,包含了缓存区,用来接收数据 DatagramPacket
byte[] bytes = new byte[1024];
DatagramPacket dp = new DatagramPacket(bytes,bytes.length);
通过socket要接收数据包
socket.recevie(dp)
处理数据 获取数据
dp.getLength() 获取数据的长度
关闭释放资源
socket.close();
TCP编程:
必须先启动服务器端,再启动发送端
发送数据步骤:
创建一个socket对象 确定连接的主机和端口号 (客户端)
Socket socket = new Socket("服务器端的ip地址",10086);
获取输出流
OutputStream os = socket.getOutputStream();
写数据
os.write("数据".getBytes());
释放资源
socket.close()
---
接收数据步骤:
创建一个服务器端的Socket对象 ServerSocket,时刻监听一个端口号
ServerSocket ss = new ServerSocket(10086)
接收客户端发送过来的socket
Socket s = ss.accept();
通过socket就可以获取输入流
InputStream is = s.getInputStream();
操作流
释放资源
ss.close()
终止输出流 : socket.shutdownOutputStream() |