一、tcp简介
TCP 用于应用程序之间的通信。
当应用程序希望通过 TCP 与另一个应用程序通信时,它会发送一个通信请求。这个请求必须被送到一个确切的地址。在双方“握手”之后,TCP 将在两个应用程序之间建立一个全双工 (full-duplex) 的通信。
这个全双工的通信将占用两个计算机之间的通信线路,直到它被一方或双方关闭为止。
特点:
1、TCP面向连接(如打电话要先拨号建立连接):
2、TCP提供可靠的服务。也就是说,通过TCP连接传送的数据,无差错,不丢失,不重复,且按序 到达;tcp通过校验和,重传控制,序号标识,滑动窗 口、确认应答实现可靠传输。如丢包时的重发控制,还可以对次序乱掉的分包进行顺序控制。
3、每一条TCP连接只能是点到点的。
4、TCP对系统资源要求较多。
二、tcp连接建立(三次握手)
如动态图:
三、tcp java 代码小练习
1.创建发送端(客户端)
public class TcpClient {
public static void main(String[] args) throws IOException {
/**
* 1.创建发送端socket 对象(创建连接)---三次握手 确保 服务端 才开始传输数据
* 2.获取输出流对象
* 3.发送数据
* 4.释放资源
*/
// 1.创建发送端socket 对象(创建连接)
Socket socket = new Socket(InetAddress.getByName("activate.navicat.com"), 8080);
//2.获取输出流对象
OutputStream outputStream = socket.getOutputStream();
//发送数据
System.out.println("客户端正在发送数据...............");
outputStream.write("(,,・∀・)ノ゛Hello Word ".getBytes());
System.out.println("客户端发送数据成功...............");
outputStream.close();
socket.close();
}
}
2.创建接收端(服务端)
public class TcpServer {
public static void main(String[] args) throws IOException {
/**
* 1.创建接收端Socket对象;
* 2.监听 (阻塞:如果建立连接失败,程序会一直阻塞,不往下执行;
* 3.获取输入流对象;
* 4.获取数据
* 5.输出数据
* 6.释放资源;
*/
//1.创建接收端Socket对象;
ServerSocket serverSocket = new ServerSocket(8080);
//2.监听 (阻塞:如果建立连接失败,程序会一直阻塞,不往下执行;
System.out.println("服务器正在等待客户端数据......");
Socket socket = serverSocket.accept();
//3.获取输入流对象;
InputStream inputStream = socket.getInputStream();
byte[] bytes = new byte[1024];
int len = inputStream.read(bytes);
System.out.println("服务器端接受到客户端发送的数据:" + new String(bytes,0,len));
inputStream.close();
socket.close();
serverSocket.close();
}
}