标签:socket 并且 port mis 准备 常见 tst ima 阶段
讲解TCP协议,我们首先要了解什么是网络通讯协议.
1、网络通讯协议
两台计算机要想在网络中互相通讯,就必须要遵守一定的规定,并且只有通讯双方同时遵守了这些规定,才能够实现数据的相互传输.而这些规定,便是由网络通讯协议针对数据传输格式,传输速率,传输步骤等制定的.
2、网络协议分类
2)UDP(User Datagram Protocal)
即用户数据包协议,UDP协议是一个面向无连接的协议。传输数据时,不需要建立连接,不管对方的服务是否启动,直接将数据、数据源和目的地都封装在数据包中,直接发送。每个数据包的大小限制在64k以内。它是不可靠协议,因为无连接,所以传输速度快,但是容易丢失数据。日常应用中,例如视频会议、QQ聊天等。
3.TCP通讯程序
1.服务端启动,等待客户端连接
2.客户端发送连接请求,等待服务端确认
3.服务端接收请求,调用accept方法,返回Socket对象
4.客户端通过Socket对象获取输出流,向服务端写入数据
5.服务端通过Socket对象获取输入流,读取客户端写入的数据
6.服务端通过Socket获取输出流,向客户端回写数据
7.客户端通过Socket获取输入流,读取服务端回写的数据
3.2 代码实现
package com.tcp; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.net.Socket; /** * @author Adil * @date 2020-04-05 18:55:09 * 模拟客户端 */ public class ClientTCP { public static void main(String[] args) throws IOException { System.out.println("客户端发送请求..."); //1.创建Socket,同时向服务端发送连接请求,等待服务端接收 Socket socket = new Socket("127.0.0.1", 8080); //2.通过Socket获取输入流 OutputStream outputStream = socket.getOutputStream(); //3.通过输出流向服务端写入数据 outputStream.write("服务端你好,我是客户端,初次见面请多关照...".getBytes()); //4.客户端读取服务端写回的数据 InputStream inputStream = socket.getInputStream(); byte[] bytes = new byte[1024]; String message = new String(bytes, 0, inputStream.read(bytes)); System.out.println("客户端读取服务端返回的数据:" + message); //5.关闭资源 outputStream.close(); socket.close(); } }
package com.tcp; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.net.ServerSocket; import java.net.Socket; /** * @author Adil * @date 2020-04-05 18:54:59 * 模拟服务端 */ public class ServerTCP { public static void main(String[] args) throws IOException { System.out.println("服务端启动,等待连接..."); //1.创建ServerSocket对象,绑定端口 ServerSocket serverSocket = new ServerSocket(8080); //2.接收客户端发送过来的连接,返回Socket对象 Socket socket = serverSocket.accept(); //3.通过Socket获取输入流,用来读取客户端发送过来的数据 InputStream inputStream = socket.getInputStream(); //4.通过输入流读取数据 byte[] bytes = new byte[1024]; int len = inputStream.read(bytes); String message = new String(bytes, 0, len); System.out.println("服务端读取客户端发送过来的数据:" + message); //5.服务端写回数据给客户端 OutputStream outputStream = socket.getOutputStream(); outputStream.write("客户端你好!我会关照你的!".getBytes()); //6.关闭资源 inputStream.close(); socket.close(); } }
标签:socket 并且 port mis 准备 常见 tst ima 阶段
原文地址:https://www.cnblogs.com/ubiquitousShare/p/12641636.html