TCP
建立连接,形成传输数据的通道;在连接中进行大数据量传输;通过三次握手完成连接,是可靠协议;必须建立连接,效率会稍低。

数据连接协议:数据的发送与接收建立在连接通道的基础上,客户端连接服务端后才可以发送接受请求数据。

接收端(服务器)思路

首先进行接收端的书写,tcp协议建立在连接之上,如果发送端没有连接到服务端则会报错
思路:
1:建立服务器端的socket服务(new ServerSocket(端口))
2:服务端没有直接流的操作,而是通过accept方法获取客户端对象,在通过获取到的客户端对象的流和客户端进行通信(获取连接服务器的客户端socket对象)
3:通过客户端的获取流对象的方法,读取数据或者写入数据(使用getinputStream方法获取输入流读取数据)
4:如果服务完成,需要关闭客户端,然后关闭服务器,但是,一般会关闭客户端,不会关闭服务器,因为服务端是一直提供服务的

import java.io.IOException;
import java.io.InputStream;
import java.net.ServerSocket;
import java.net.Socket;

//tcp服务器端(接收端)
public class TcpService {

	public static void main(String[] args) throws Exception {
		// 1:建立服务器端的socket服务,需要一个端口
		ServerSocket ss = new ServerSocket(端口号);
		// 2:服务端没有直接流的操作,而是通过accept方法获取客户端对象,在通过获取到的客户端对象的流和客户端进行通信
		Socket s = ss.accept();// 获取当前连接服务端的客户端对象
		// 3:通过客户端的获取流对象的方法,读取数据或者写入数据
		String hostAddress = s.getInetAddress().getHostAddress();
		System.out.println(hostAddress + "连接服务器");
		InputStream is = s.getInputStream();
		byte[] b = new byte[1024];
		int len = 0;
		while ((len = is.read(b)) != -1) {
			System.out.println(new String(b, 0, len));
		}
		// 4:如果服务完成,需要关闭客户端,然后关闭服务器,但是,一般会关闭客户端,不会关闭服务器,因为服务端是一直提供服务的
		s.close();// 关闭客户端
		ss.close();// 关闭服务器端
	}
}

发送端(客户端)思路

发送端其实是将数据封装至发送端socket对象中,然后将socket对象发送至接收端进行接收

1:建立客户端的Socket服务,并明确要连接的服务器。(new)
2:如果连接建立成功,就表明,已经建立了数据传输的通道.就可以在该通道通过IO进行数据的读取和写入.该通道称为Socket流,Socket流中既有读取流,也有写入流.
3:通过Socket对象的方法,可以获取这两个流
4:通过流的对象可以对数据进行传输
5:如果传输数据完毕,关闭资源

//tcp客户端(发送端)

import java.io.IOException;
import java.io.OutputStream;
import java.net.Socket;
import java.net.UnknownHostException;

//tcp客户端(发送端)
public class TcpClient {
	public static void main(String[] args) throws Exception {
		// 1:建立客户端的Socket服务,并明确要连接的服务器。
		Socket s = new Socket("ip地址", 端口号);
		// 2:如果连接建立成功,就表明,已经建立了数据传输的通道.就可以在该通道通过IO进行数据的读取和写入.该通道称为Socket流,Socket流中既有读取流,也有写入流.
		// 3:通过Socket对象的方法,可以获取这两个流
		OutputStream os = s.getOutputStream();
		// 4:通过流的对象可以对数据进行传输
		os.write("hello".getBytes());//字符串转为数组
		// 5:如果传输数据完毕,关闭资源
		os.flush();
		os.close();
		s.close();

	}
}