diff --git a/javaSE-day11/src/com/inmind/tcp03/TcpClientDemo04.java b/javaSE-day11/src/com/inmind/tcp03/TcpClientDemo04.java index 47edc74..468cf37 100644 --- a/javaSE-day11/src/com/inmind/tcp03/TcpClientDemo04.java +++ b/javaSE-day11/src/com/inmind/tcp03/TcpClientDemo04.java @@ -35,6 +35,9 @@ public class TcpClientDemo04 { OutputStream os = client.getOutputStream(); os.write("淘宝的官网".getBytes()); + //注意:当发送完毕请求数据后,要设置结束的标记,否则服务器会长时间等待客户端的请求数据 + client.shutdownOutput(); + //3.获取字节输入流,接收响应数据 InputStream is = client.getInputStream(); //一次读字节数组的方式来读取响应数据 diff --git a/javaSE-day11/src/com/inmind/tcp03/TcpServerDemo04.java b/javaSE-day11/src/com/inmind/tcp03/TcpServerDemo04.java new file mode 100644 index 0000000..d4dad3a --- /dev/null +++ b/javaSE-day11/src/com/inmind/tcp03/TcpServerDemo04.java @@ -0,0 +1,61 @@ +package com.inmind.tcp03; + +import java.io.IOException; +import java.io.InputStream; +import java.io.OutputStream; +import java.net.ServerSocket; +import java.net.Socket; + +/* +在java中使用一个类表示服务端ServerSocket +构造方法: +ServerSocket(int port) 创建绑定到指定端口的服务器套接字。 + +常用方法: +Socket accept() 侦听要连接到客户端请求并接受它。 + void close() 关闭此套接字。 + InetAddress getInetAddress() 返回套接字所连接的地址。 + InputStream getInputStream() 返回此套接字的输入流.(接收请求数据的) + OutputStream getOutputStream() 返回此套接字的输出流。 (发送响应数据) + void shutdownOutput() 禁用此套接字的输出流 (设置了一个发送请求数据的结束标记) +void close() 关闭此套接字。 + +服务器实现步骤: +1.创建服务器对象 +2.接收客户端请求 +3.获取请求数据 +4.业务逻辑代码 +5.发送响应数据 +6.释放资源 + */ +public class TcpServerDemo04 { + public static void main(String[] args) throws IOException { + //1.创建服务器对象 + //ServerSocket(int port) 创建绑定到指定端口的服务器套接字。 + ServerSocket server = new ServerSocket(10001); + System.out.println("服务启动了"); + + //2.接收客户端请求 + //Socket accept() 侦听要连接到客户端请求并接受它。 + Socket clientSocket = server.accept();//阻塞方法 + + //3.获取请求数据 + InputStream is = clientSocket.getInputStream(); + byte[] buf = new byte[1024]; + int len; + while ((len = is.read(buf)) != -1) { + //打印获取的请求数据 + System.out.println(new String(buf,0,len)); + } + //4.业务逻辑代码 + String result = "www.taobao.com"; + + //5.发送响应数据 + OutputStream os = clientSocket.getOutputStream(); + os.write(result.getBytes()); + + //6.释放资源 + clientSocket.close(); + server.close(); + } +}