Java网络编程:Socket 和 ServerSocket
java.net.Socket 类代表一个套接字,并且 java.net.ServerSocket 类为服务器程序提供了一种来监听客户端,并与他们建立连接的机制
ServerSocket 创建服务器端
示例:
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.Scanner;
public class TCPServer {
public static void main(String[] args) throws IOException {
// 创建服务器
ServerSocket server = new ServerSocket(1234);//端口
System.out.println("服务器已启动,正在等待连接......");
while (true) {//循环运行服务器代码
// 接收连接的服务器
Socket accept = server.accept();
//获取连接的客户端ip地址
System.out.println(accept.getInetAddress() + "已连接");
// 创建输入流,获取客户端传入的数据
InputStream input = accept.getInputStream();
byte[] bytes = new byte[1024];
// 开始读取数据
input.read(bytes);
String message1 = new String(bytes).trim();
System.out.println(message1);
// 创建输出流,给客户端发送信息
Scanner in = new Scanner(System.in);
System.out.print("请输入需要传到服务器的信息:");
String message2 = in.nextLine();
// 创建输出流,传送数据到服务器
OutputStream out = accept.getOutputStream();
// 开始传出数据
out.write(message2.getBytes());
}
}
}
ServerSocket 创建客户端
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.Socket;
import java.net.UnknownHostException;
import java.util.Scanner;
public class TCPClient {
public static void main(String[] args) throws UnknownHostException, IOException {
while (true) {//循环连接服务器
// 创建客户端,连接服务器
Socket socket = new Socket("192.172.6.31", 1234);//服务器ip,端口
// 创建扫描器
Scanner in = new Scanner(System.in);
System.out.print("请输入需要传到服务器的信息:");
String message1 = in.nextLine();
// 创建输出流,传送数据到服务器
OutputStream out = socket.getOutputStream();
// 开始传出数据
out.write(message1.getBytes());
// 创建输入流,接收服务器传出的数据
InputStream input = socket.getInputStream();
byte[] bytes = new byte[1024];
// 开始读取数据
input.read(bytes);
String message2 = new String(bytes).trim();
System.out.println(message2);
}
}
}