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通信が古代の2つの都市間の通信であると想定します。
情報を送信するためにメッセンジャーを送信する送信者。したがって、最初にメッセンジャー(Socket)オブジェクトを作成し、どのドア(Port)のどの都市(IP)かを正確に把握するメッセンジャー、次に都市から情報を運ぶメッセンジャー(OutputStream)を作成する必要があります。市の門を閉じます(close)。受信者は別の都市です。最初に対応するドアを開き(ServerSocket)、ドアから手紙を受け取る人(Socket s = ss.accept())を開いてから、メッセージを受け入れ(InputStream)、最後にシティゲートを閉じます(close)。