1. TCP发送数据步骤
TCP发送数据的步骤:
1.创建客户端的Socket对象
2.获取输出流,写数据
3.释放资源
2. 发送数据程代码
import java.io.IOException;
import java.io.OutputStream;
import java.net.Socket;
public class ClientDemo {
public static void main(String[] args) throws IOException {
//1.创建客户端的Socket对象
//Socket(String host, int port) 创建流套接字并将其连接到指定主机上的指定端口号。
Socket s = new Socket("zshao",10001);
//2.获取输出流,写数据
//OutputStream getOutputStream() 返回此套接字的输出流。
OutputStream os = s.getOutputStream();
os.write("hello,tpc".getBytes());
//3.释放资源
s.close();
}
}
3. TCP接收数据步骤
TCP接收数据的步骤
1.创建服务器端的Socket对象
2.监听客户端的连接,返回一个Socket对象
3.获取输入流,读数据,并把数据显示在控制台上
4.释放资源
4.接收数据代码
import java.io.IOException;
import java.io.InputStream;
import java.net.ServerSocket;
import java.net.Socket;
public class ServerDemo {
public static void main(String[] args) throws IOException {
//1.创建服务器端的Socket对象
//ServerSocket(int port) 创建绑定到指定端口的服务器套接字。
ServerSocket ss = new ServerSocket(10001);
//2.监听客户端的连接,返回一个Socket对象
//Socket accept() 侦听要连接到此套接字并接受它。
Socket s = ss.accept();
//3.获取输入流,读数据,并把数据显示在控制台上
InputStream is = s.getInputStream();
byte [] bys = new byte[1024];
int len;
while ((len=is.read(bys))!=-1){
System.out.println("数据是:"+ new String(bys,0,len));
}
//4.释放资源
ss.close();
}
}
5. 程序运行结果
先打开运行接收程序等待发送,再运行发送程序,结果显示如下:
6.形象化记忆
为了方便记忆,我想了一个比喻。
假设TCP通信是古代两个城市之间的交流。
发送方,要派使者去送信息,所以首先要创建使者(Socket)对象,使者要知道具体去哪座城(IP)的哪个门(port),然后使者携带信息出城(OutputStream),出完成要关城门(close)。
接收方是另一座城。首先要打开对应的门(ServerSocket),门中出来接信的人(Socket s = ss.accept()),然后接受信息(InputStream),最后关闭城门(close)。