服务端代码:
//服务器端
public class Server {
public static void main(String[] args) throws Exception {
ServerSocket serverSocket = new ServerSocket(8888);
System.out.println("服务器启动==========");
while(!serverSocket.isClosed()){
Socket socket = serverSocket.accept(); //阻塞,等待连接
System.out.println("与 " + socket.toString() + "连接成功");
try{
// I/O
InputStream inputStream = socket.getInputStream(); //接收数据流
BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream,"UTF-8"));
String message;
while((message = reader.readLine())!= null){
if(message.length() == 0) break;
System.out.println(message);
}
System.out.println("接收到来至:" + socket.toString() + "的数据");
}catch (IOException e){
e.printStackTrace();
}finally {
try {
socket.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
}
服务器端启动:
使用浏览器与服务器端交互localhost:8888
回到服务器端查看输出:
浏览器与服务器端建立连接成功,并遵循HTTP协议发出请求数据包:
HTTP协议中请求数据头通常包括四个部分:
在这个例子中请求数据为空。
在上面,浏览器与服务器端交互时,提示网页无法运行。
这是因为,服务器端没有对浏览器发出的请求做出响应。我们需要在服务器端编写响应浏览器的代码。
public class Server {
public static void main(String[] args) throws Exception {
ServerSocket serverSocket = new ServerSocket(8888);
System.out.println("服务器启动==========");
while(!serverSocket.isClosed()){
Socket socket = serverSocket.accept(); //阻塞,等待连接
System.out.println("与 " + socket.toString() + "连接成功");
try{
// I/O
InputStream inputStream = socket.getInputStream(); //接收数据流
BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream,"UTF-8"));
String message;
while((message = reader.readLine())!= null){
if(message.length() == 0) break;
System.out.println(message);
}
System.out.println("接收到来至:" + socket.toString() + "的数据");
OutputStream outputStream = socket.getOutputStream();
outputStream.write("HTTP/1.1 200 OK\r\n".getBytes());
outputStream.write("Content-Length:11\r\n\n".getBytes());
outputStream.write("Hello World!".getBytes());
outputStream.flush();
}catch (IOException e){
e.printStackTrace();
}finally {
try {
socket.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
}
浏览器重新访问:localhost:8888
得到响应结果。
附:HTTP协议——响应状态码
版权说明 : 本文为转载文章, 版权归原作者所有 版权申明
原文链接 : https://blog.csdn.net/weixin_43598687/article/details/122702465
内容来源于网络,如有侵权,请联系作者删除!