是运行的服务端的ServerSocket。socket方式是点对点的属于TCP。
import java.io.BufferedWriter;
import java.io.DataInputStream;
import java.io.IOException;
import java.io.OutputStreamWriter;
import java.net.ServerSocket;
import java.net.Socket;
public class SocketServer {
public static void main(String[] args) throws IOException, IOException {
//1.创建服务器套接字
ServerSocket serverSocket = new ServerSocket(8888);
BufferedWriter bf = null;
Socket socket = null;
DataInputStream date = null;
String welcome = "欢迎使用我的宇宙无敌服务器";
while(true){
//2.建立连接,这只是建立连接,并不是接收客户端发来的信息,就像按电话的接听键
socket = serverSocket.accept(); // 阻塞式的接收方式
System.out.println("Server: " + welcome);
//3.逐行写出给客户端
bf = new BufferedWriter(new OutputStreamWriter(
socket.getOutputStream() // 从socket中获取数据
));
bf.append(welcome);
bf.newLine(); // 一定要换行,相当于\r\n
bf.flush();
//4.接收客户端发来的信息
date = new DataInputStream(socket.getInputStream());
String message = date.readUTF();
System.out.println(message);
}
}
}
可以用来连接服务器
import java.io.BufferedReader;
import java.io.DataOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.Socket;
public class SocketClient {
public static void main(String[] args) throws IOException {
//1.建立服务器连接
Socket client = new Socket("localhost", 8888);
//2.获取服务器传来的数据
BufferedReader bf = new BufferedReader(
new InputStreamReader(
client.getInputStream()
));
//阻塞式
String getMessage = bf.readLine();
System.out.println(getMessage);
//3.客户端向服务器发送
DataOutputStream ds = new DataOutputStream(client.getOutputStream());
ds.writeUTF("client: 获取到了服务器连接");
ds.flush();
ds.close();
}
}