3. TCP通信程序
3.1 TCP通信原理
TCP通信协议是一种可靠的网络协议,他在通信的两端各建立了一个Socket对象,从而在通信的两端形成网络虚拟链路,一旦建立了虚拟的网络链路,两端的程序就可以通过虚拟链路进行通信
Java对基于TCP协议的网络提供了良好的封装,使用Socket对象来代表两端的通信端口,并通过Socket产生IO流来进行网络通信
Java为客户端提供了Socket类,为服务端提供了ServerSocket类
3.2 TCP发送数据
发送数据的步骤:
- 创建客户端的Socket对象(Socket)
- 获取输入输出流
- 释放资源
相关代码
package StudyDemo03;
import java.io.*;
import java.net.*;
public class SendDemo {
public static void TCPSend() throws UnknownHostException, IOException {
Socket s = new Socket("192.168.1.100", 10000);
BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(s.getOutputStream())); //产生Socket的IO流
String line;
while((line = bf.readLine()) != null) {
bw.write(line);
bw.newLine();
bw.flush();
if(line.equals("88")) break;
}
s.close();
}
public static void main(String[] args) {
try {
TCPSend();
} catch (IOException e) {
// TODO 自动生成的 catch 块
e.printStackTrace();
}
}
}
3.3 TCP接受数据
接受数据的步骤:
- 创建服务器端的Socket对象(ServerSocket)
- 获取输入流、读数据,并把数据显示在控制台
- 释放资源
package StudyDemo03;
import java.io.*;
import java.net.*;
public class ReceiveDemo {
public static void TCPReceive() throws IOException {
ServerSocket ss = new ServerSocket(10000);
Socket s = ss.accept(); //Java封装的三次握手
BufferedReader br = new BufferedReader(new InputStreamReader(s.getInputStream())); //同样产生一个IO流
String line;
while((line = br.readLine()) != null) {
System.out.println(line);
}
ss.close();
}
public static void main(String[] args) {
try {
TCPReceive();
} catch (IOException e) {
// TODO 自动生成的 catch 块
e.printStackTrace();
}
}
}