在文件下载时报错“socket write error”怎么办?

在文件下载时报错“socket write error”怎么办?,第1张

1、这个是应为用户创建的是长连接,之后突然关闭了本地的handler,导致流读取错误,所以就报错了。

2、这个如果是用来转发的,之后发现本地停止后报出来的,是不影响正常使用的,之后重新运行代码,会再次进行连接的,建议这个本地的socket不要随意的断开连接,否则如果有流没读完,可能会导致后续程序出问题的。

3、文件能成功下载struts代码:

public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) { // TODO Auto-generated method stub String path = request.getParameter("path").replace("\\\\", "\\")。

在进行Socket转发HTTP请求时,有几个注意事项需要考虑:

1,HTTP协议:HTTP是应用层协议,使用TCP作为传输协议。因此,在进行Socket转发HTTP请求时,需要了解HTTP协议的规范,包括请求头、响应头、请求体和响应体等。

2,Socket连接:在进行Socket转发HTTP请求时,需要建立Socket连接并发送HTTP请求。连接可以使用TCP连接,也可以使用SSL/TLS连接。在建立连接时,需要考虑连接的安全性和稳定性。

3,编码方式:HTTP协议中的请求头和响应头通常使用ASCII编码,而请求体和响应体可以使用多种编码方式,例如UTF-8、GB2312等。在进行Socket转发HTTP请求时,需要正确地解析和处理这些编码方式。

4,Cookie:HTTP协议中的Cookie机制用于跟踪用户会话。在进行Socket转发HTTP请求时,需要正确地处理Cookie信息,以确保请求和响应之间的会话保持一致。

5,缓存:HTTP协议中的缓存机制可以提高性能,减少带宽占用。在进行Socket转发HTTP请求时,需要正确地处理缓存信息,以避免请求和响应之间的重复传输。

6,安全性:在进行Socket转发HTTP请求时,需要考虑安全性问题,例如防止跨站脚本攻击、防止SQL注入攻击等。

7,代理服务器:在进行Socket转发HTTP请求时,需要考虑代理服务器的存在。代理服务器可以拦截、修改或过滤HTTP请求和响应。因此,需要确保代理服务器的设置正确,并且可以正确地处理代理服务器返回的HTTP响应。

总之,在进行Socket转发HTTP请求时,需要了解HTTP协议的规范,正确地处理编码方式、Cookie信息、缓存信息和安全性问题,以确保请求和响应之间的正确传输和处理。

巨量HTTP已向众多互联网知名企业提供服务,当前节点覆盖全国200+城市,日产千万高品质ip池,对提高爬虫的抓取效率提供帮助,支持API批量使用,支持多线程高并发使用。同时,推出注册每日领取1000ip的永久免费套餐,期待您的咨询和使用。

客户端输入“time”请求当前时间,输入“info”请求服务器信息,输入“bye”退出,输入其他和服务器对话。

服务器端:

import java.io.BufferedReader

import java.io.InputStreamReader

import java.io.PrintStream

import java.net.ServerSocket

import java.net.Socket

import java.util.Calendar

public class Server {

// 定义数据成员

public static final int port = 8000

ServerSocket server = null

Socket socket = null

BufferedReader in = null

PrintStream out = null

BufferedReader userin = null

public Server() {

try {

server = new ServerSocket(port)// 创建一个倾听Socket

} catch (Exception e) {

System.out.println("异常:" + e)

}

}

void acceptSocket() {

try {

socket = server.accept()// 等待客户机连接请求

System.out.println("serversocket: " + socket)

} catch (Exception e) {

System.out.println("异常:" + e)

}

}

void creatInOut() {

try {

// 通过Socket获取连接上的输入流

in = new BufferedReader(new InputStreamReader(

socket.getInputStream()))

// 通过Socket获取连接上的输出流

out = new PrintStream(socket.getOutputStream())

} catch (Exception e) {

System.out.println("异常:" + e)

}

}

void talk() {

String str// 存放接收到的字符串

try {

// 创建标准输入流,从键盘接收数据

userin = new BufferedReader(new InputStreamReader(System.in))

while (true) {

System.out.println("等待客户端的消息...")

str = in.readLine()// 读取客户端发送的数据

System.out.println("客户端saying:" + str)

if (str.equals("bye"))

break

System.out.print("给客户端发送:")

if (str.equals("time"))// 请求时间

str = "当前时间:" + Calendar.getInstance().getTime()

else if (str.equals("info")) {// 请求信息

str = "服务器IP:" + socket.getInetAddress().getHostAddress()

+ "服务器端口:" + server.getLocalPort()

} else

str = userin.readLine()// 从键盘接收数据

out.println(str)// 发送数据给客户端

out.flush()

System.out.println(str)

if (str.equals("bye"))

break

}

out.close()

in.close()

socket.close()

server.close()

} catch (Exception e) {

System.out.println("异常:" + e)

}

}

public static void main(String args[]) {

Server server = new Server()

server.acceptSocket()

server.creatInOut()

server.talk()

}

}

客户端:

import java.io.BufferedReader

import java.io.InputStreamReader

import java.io.PrintStream

import java.net.InetAddress

import java.net.Socket

public class Client {

public static void main(String[] args) {

String str

try {

InetAddress addr = InetAddress.getByName("127.0.0.1")

Socket socket = new Socket(addr, 8000)// 发出连接请求

System.out.println("clientsocket=" + socket)

BufferedReader in = new BufferedReader(new InputStreamReader(

socket.getInputStream()))

// 连接建立,通过Socket获取连接上的输入流

PrintStream out = new PrintStream(socket.getOutputStream())

// 连接建立,通过Socket获取连接上的输出流

BufferedReader userin = new BufferedReader(new InputStreamReader(

System.in))

// 创建标准输入流,从键盘接收数据

while (true) {

System.out.print("发送字符串:")

str = userin.readLine()// 从标准输入中读取一行

out.println(str)// 发送给服务器

if (str.equals("bye"))

break

System.out.println("等待服务器端消息...")

str = in.readLine()// 读取服务器端的发送的数据

System.out.println("服务器saying:" + str)

if (str.equals("bye"))

break

}

out.close()

in.close()

socket.close()

} catch (Exception e) {

System.out.println("异常:" + e)

}

}

}


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/8163445.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-14
下一篇 2023-04-14

发表评论

登录后才能评论

评论列表(0条)

保存