TCP程序:服务器与客户端的交互
需要使用到两个类, 来编写TCP协议的 CS程序 .
1.ServerSocket 搭建服务器
2.Socket 创建连接节点
服务器
import java.io.*;
import java.net.ServerSocket;
import java.net.Socket;
public class ServiceDemo1 {
//TCP网络编程
//服务器
public static void main(String[] args) throws IOException {
//搭建服务器
ServerSocket server = new ServerSocket(55565);
System.out.println("服务器创建成功");
//等待客户端连接
Socket socket = server.accept();
System.out.println("客户端连接成功");
//接下来想要服务器给客户端发送数据
//调用socket的getXX方法获取输出流
OutputStream os = socket.getOutputStream();
//创建一个打印流,传入输出流对象
PrintStream print = new PrintStream(os);
print.println("服务器发来信息:欢迎连接本服务器!");
//服务器接收客户端的数据
//创建输入流
InputStream is = socket.getInputStream();
//创建缓存读取流
BufferedReader br = new BufferedReader(new InputStreamReader(is));
String s = br.readLine();
System.out.println(s);
System.out.println("服务器程序运行结束");
}
}
客户端
import java.io.*;
import java.net.Socket;
public class ClientDemo1 {
//客户端
public static void main(String[] args) throws IOException {
//创建连接节点,传入服务器IP地址和端口号
Socket socket = new Socket("127.0.0.1",55565);
//客户端想要接受服务器发送的数据
//创建一个输入流
InputStream is = socket.getInputStream();
//创建一个缓存输入/读取流,传入输入流对象
BufferedReader br = new BufferedReader(new InputStreamReader(is));
String s = br.readLine();
System.out.println(s);
//客户端要给服务器发数据
//创建输出流
OutputStream os = socket.getOutputStream();
//创建打印流
PrintStream print = new PrintStream(os);
print.println("服务器收到客户端的回复:服务器你好,我是客户端");
}
}
开始运行、首先启动服务器,因为必须有服务器在等待连接,客户端才能正常启动并连接
服务器方显示:
再运行客户端
客户端方显示
此时服务器方显示
在服务器中加入多线程
可以实现一个服务器对接多个客户端
服务器:
import java.io.*;
import java.net.ServerSocket;
import java.net.Socket;
public class ServiceDemo1 {
//TCP网络编程
//服务器
public static void main(String[] args) throws IOException {
//搭建服务器
ServerSocket server = new ServerSocket(55565);
System.out.println("服务器创建成功");
//等待客户端连接
while(true){
Socket socket = server.accept();
new Thread(new Runnable() {
@Override
public void run() {
//操作代码
}
}).start();
System.out.println("客户端连接成功");
}
}
}