htttp服务器简单实践-Socket

博客主要提及了代码运行效果以及察看页面源码效果,聚焦于信息技术中代码运行和页面源码相关内容。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

代码

import java.io.BufferedInputStream;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;
import java.nio.charset.StandardCharsets;

public class JandanHttpServerSocket {
	 public static void main(String[] arg) throws Exception{
		 try (ServerSocket ss = new ServerSocket(8000)) {
			    for (; ; ) {
			        Socket s = ss.accept();
			        InputStream is = s.getInputStream();
			        OutputStream os = s.getOutputStream();

			        BufferedInputStream bif = new BufferedInputStream(is);
			        final int len = 1024;
			        byte[] bytes = new byte[len];
			        for (int read = bif.read(bytes); read != -1; read = bif.read()) {
			            String kB = new String(bytes, StandardCharsets.UTF_8);
			            System.out.println(kB);
			            if (read < len) {
			                break;
			            }
			        }

					// 响应体
			        String responseStr = "HTTP/1.1 200 OK\r\n"
			                             + "Content-Length: 11\r\n"
			                             + "\r\n"
			                             + "Hello world";
			        os.write(responseStr.getBytes(StandardCharsets.UTF_8));
			        os.flush();
			    }
			}

	 }
}

运行效果
运行效果
察看页面源码效果
察看页面源码效果

### 使用HTTP透传协议从HTTP服务器下载文件 为了实现通过HTTP透传方式从HTTP服务器下载文件,通常涉及配置反向代理服务器(如Nginx),以便客户端可以通过该代理访问实际的HTTP服务器。具体来说,在物联网设备或其他客户端发起请求时,这些请求会先到达Nginx服务器,再由Nginx转发至目标Web服务器。 #### Nginx配置示例 以下是基于Nginx的一个典型配置实例,用于设置HTTP透传服务: ```nginx server { listen 80; server_name yourdomain.com; location /download/ { proxy_pass http://backend_server_address/; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; add_header Cache-Control "no-cache"; } } ``` 此配置允许任何针对`yourdomain.com/download/*`路径下的资源请求被透明地传递给后台的实际服务器地址[^2]。 #### 客户端下载操作流程 当需要从上述配置好的HTTP服务器下载文件时,可以按照标准的HTTP GET方法来执行下载动作。对于编程语言层面的操作,这里给出Python脚本作为例子展示如何完成这一过程: ```python import requests url = 'http://yourdomain.com/download/filename.ext' response = requests.get(url, stream=True) if response.status_code == 200: with open('filename.ext', 'wb') as f: for chunk in response.iter_content(chunk_size=1024): if chunk: f.write(chunk) else: print(f'Failed to download file. Status code: {response.status_code}') ``` 这段代码展示了怎样利用Python内置库requests发送GET请求并保存返回数据流为本地文件[^1]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值