Java基础知识强化之网络编程笔记06:TCP之TCP协议发送数据 和 接收数据

时间:2023-03-09 13:05:29
Java基础知识强化之网络编程笔记06:TCP之TCP协议发送数据 和 接收数据

1. TCP协议发送数据 和 接收数据

TCP协议接收数据:
• 创建接收端的Socket对象
• 监听客户端连接。返回一个对应的Socket对象
• 获取输入流,读取数据显示在控制台
• 释放资源

TCP协议发送数据:

• 创建发送端的Socket对象
• 这一步如果成功,就说明连接已经建立成功了。
• 获取输出流,写数据
• 释放资源

2. 代码实现:

(1)发送端:

 1 package cn.itcast_06;
2
3 import java.io.IOException;
4 import java.io.OutputStream;
5 import java.net.Socket;
6
7 /*
8 * TCP协议发送数据:
9 * A:创建发送端的Socket对象
10 * 这一步如果成功,就说明连接已经建立成功了。
11 * B:获取输出流,写数据
12 * C:释放资源
13 *
14 * 连接被拒绝。TCP协议一定要先开服务器。
15 * java.net.ConnectException: Connection refused: connect
16 */
17 public class ClientDemo {
18 public static void
main(String[] args) throws IOException {
// 创建发送端的Socket对象
// Socket(InetAddress address, int port)
// Socket(String host, int port)
// Socket s = new Socket(InetAddress.getByName("192.168.12.92"), 8888);
Socket s = new Socket("192.168.12.92", 8888); // 获取输出流,写数据
// public OutputStream getOutputStream()
OutputStream os = s.getOutputStream();
os.write("hello,tcp,我来了".getBytes()); // 释放资源
s.close();
}
}

(2)接收端:

 1 package cn.itcast_06;
2
3 import java.io.IOException;
4 import java.io.InputStream;
5 import java.net.ServerSocket;
6 import java.net.Socket;
7
8 /*
9 * TCP协议接收数据:
10 * A:创建接收端的Socket对象
11 * B:监听客户端连接。返回一个对应的Socket对象
12 * C:获取输入流,读取数据显示在控制台
13 * D:释放资源
14 */
15 public class ServerDemo {
16 public static void
main(String[] args) throws IOException {
// 创建接收端的Socket对象
// ServerSocket(int port)
ServerSocket ss = new ServerSocket(8888); // 监听客户端连接。返回一个对应的Socket对象
// public Socket accept()
Socket s = ss.accept(); // 侦听并接受到此套接字的连接。此方法在连接传入之前一直阻塞。(等待别人连接) // 获取输入流,读取数据显示在控制台
InputStream is = s.getInputStream(); byte[] bys = new byte[1024];
int len = is.read(bys); // 阻塞式方法(等待传入数据)
String str = new String(bys, 0, len); String ip = s.getInetAddress().getHostAddress(); System.out.println(ip + "---" + str); // 释放资源
s.close();
// ss.close(); //这个不应该关闭
}
}

 

3. TCP协议发送和接收数据图解: 

Java基础知识强化之网络编程笔记06:TCP之TCP协议发送数据 和 接收数据