Java——TCP通信程序练习
一、客户端接收反馈,服务器给出反馈
1、需求
- 客户端:发送数据,接收服务器反馈
- 服务器:接收数据,给出反馈
2、代码实现
客户端
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.Socket;
public class ClientDemo {
public static void main(String[] args) throws IOException {
//建立客户端Socket对象
Socket s = new Socket("10.18.40.120", 10000);
//获取输出流,写数据
OutputStream os = s.getOutputStream();
os.write("hello".getBytes());
//接收服务器端反馈
InputStream is = s.getInputStream();
byte[] bys = new byte[1024];
int len = is.read(bys);
String data = new String(bys, 0, len);
System.out.println("客户端:" + data);
//释放资源
s.close();
}
}
服务器端
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;
public class ServerDemo {
public static void main(String[] args) throws IOException {
//创建服务器端对象
ServerSocket ss = new ServerSocket(10000);
//监听客户端连接
Socket s = ss.accept();
//获取输入流,读数据,并把数据显示在控制台
InputStream is = s.getInputStream();
byte[] bys = new byte[1024];
int len = is.read(bys);
String data = new String(bys, 0, len);
System.out.println("服务器:" + data);
//给出反馈
OutputStream os = s.getOutputStream();
os.write("数据已将收到".getBytes());
//释放资源
ss.close();
}
}
二、客户端数据来自键盘输入
1、需求
- 客户端:数据来自于键盘输入,直到输入的数据是886,发送数据结束
- 服务端:接收到的数据在控制台输出
2、代码实现
① 使用字节输出流对象
客户端
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.net.Socket;
public class ClientDemo {
public static void main(String[] args) throws IOException {
//建立客户端对象
Socket s = new Socket("10.18.40.120", 10000);
//键盘录入
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String line;
while ((line =