Java入门13(socket)
Socket编程(网络通信)
服务器端Demo(ServreSocket)
创建服务端时,如果不提供IP地址,则默认为本地连接(127.0.0.1),但是一定需要手动配置监听端口!
public static void main(String[] args) {
// 如果不提供IP地址,默认localhost
// 但是服务器端的端口号需要手动指令
try(ServerSocket serverSocket = new ServerSocket(10086);
// 服务器端会一直阻塞在这个位置,等待客户端接入,客户端会在向服务器端发送请求的时候,会将客户端本身(socket对象)发送过来
Socket s = serverSocket.accept()) {
System.out.println("服务器正在监听:");
// 从客户端获取对应的输入流
InputStream inputStream = s.getInputStream();
// 将输入流进行二次封装,封装为数据流
DataInputStream dis = new DataInputStream(inputStream);
// 使用数据流的方法读取字符串
String str = dis.readUTF();
System.out.println(str);
// 关闭流
dis.close();
} catch (IOException e) {
throw new RuntimeException(e);
}
}
客户端Demo(Socket)
创建客户端时,客户对象的端口由操作系统自动分配,参数传递服务端的IP地址以及服务器监听的端口
public static void main(String[] args) {
try(Socket s = new Socket("localhost",10086);
// 提供一个输出流,用于写入数据
OutputStream os = s.getOutputStream();
// 二次封装
DataOutputStream dos = new DataOutputStream(os)) {
dos.writeUTF("Can you hear me?");
} catch (IOException e) {
throw new RuntimeException(e);
}
}