ServerSocket 服务端
是运行的服务端的ServerSocket。socket方式是点对点的属于TCP。
建立服务端频骤
- 建立端口并指定服务器IP
- 使用 accpet 方法接收连接,阻塞式方法
- 使用流通信
代码实现
- 建立服务器,建立通道对象
- 接收数据
- 发送数据
- 阻塞式的意思是,如果没有连接,就会一直等待。所以在while里面是一直处于等待状态。
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(); // 一定要换行,相当于rn
bf.flush();
//4.接收客户端发来的信息
date = new DataInputStream(socket.getInputStream());
String message = date.readUTF();
System.out.println(message);
}
}
}
Soket客户端
可以用来连接服务器
连接步骤
- 建立连接
- 使用I/O 学节流进行交互
代码实现
代码语言:javascript复制
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();
}
}