TCP的客户端和服务端
程序员文章站
2022-06-06 12:10:32
...
TCP服务端
import java.io.*;
import java.net.ServerSocket;
import java.net.Socket;
public class TCPServer {
public static void main(String[] args) throws IOException {
/*
获取客户端的数据并显示在屏幕上
1.创建tcp服务端socket,明确端口,监听一个端口
2.服务端只要获取到连接过来的客户端就可以和指定的客户端通信了
3.通过获取客户端的读取流对象读取客户端发来的数据
4.并显示屏幕上
5.关闭资源
*/
System.out.println("服务端启动");
// 创建tcp服务端socket,明确端口,监听一个端口
ServerSocket serverSocket = new ServerSocket(6666);
while (true) {
// 服务端只要获取到连接过来的客户端就可以和指定的客户端通信了
Socket socket = serverSocket.accept();
String ip = socket.getInetAddress().getHostAddress();
System.out.println(ip + "连接");
// 通过获取客户端的读取流对象读取客户端发来的数据
InputStream inputStream = socket.getInputStream();
BufferedReader bufIn = new BufferedReader(new InputStreamReader(inputStream));
//给客户端回馈数据.
OutputStream outputStream = socket.getOutputStream();
PrintWriter out = new PrintWriter(outputStream,true);//自动刷新
String line = null;
while((line=bufIn.readLine()) != null){ //读一行,注意行终止符
if("over".equals(line)){ //如果客户端发过来的是over,转换结束
break;
}
System.out.println(line);//打印客户端发来的信息
out.println(line.toUpperCase());//转成大写通过OutputStream发送回去
// out.flush();
}
// 关闭客户端
socket.close();
}
//如果不断的获取客户端,不用关闭服务端.
// serverSocket.close();
}
}
TCP客户端
import java.io.*;
import java.net.Socket;
public class TCPClient {
public static void main(String[] args) throws IOException {
/*
通过TCP传输,将数据发送给服务器
1.建立tcp的客户端socket,明确服务端的地址和端口
2.如果通道建立成功就会出现socket,io流
客户端需要做的就是获取socket流中的输出流,将数据发送到目的地:服务端.
3.通过socket输出流将数据发送.
4.关闭资源
*/
System.out.println("客户端启动");
// 建立tcp的客户端socket,明确服务端的地址和端口
Socket socket = new Socket("127.0.0.1",6666);
//获取键盘输入流对象
BufferedReader keyin = new BufferedReader(new InputStreamReader(System.in));
// 如果通道建立成功就会出现socket,io流.客户端需要做的就是获取socket流中的输出流,将数据发送到目的地:服务端.
OutputStream outputStream = socket.getOutputStream();
PrintWriter out = new PrintWriter(outputStream,true);//自动刷新
//读取服务端返回的数据,通过socket输入流对象
InputStream inputStream = socket.getInputStream();
BufferedReader bufIn = new BufferedReader(new InputStreamReader(inputStream));
// 通过socket输出流将数据发送.
//发送数据
String line = null;
while((line = keyin.readLine()) != null){ //读取一行,行终止符
out.println(line);
// out.flush();
if("over".equals(line)){
break;
}
String upperText = bufIn.readLine();
System.out.println(upperText); //自动换行
}
// 关闭资源
socket.close();
}
}