问题描述
我有用ServerSocketserver=newServerSocket(80);去监听80端口。接着我用Socketclient=server.accept();client.setKeepAlive(true);InputStreamin=client.getInputStream();byte[]buff=newbyte[1024*100];intlen=in.read(buff);
去读取客户端的请求信息。测试:我用get方式,post的application/x-www-form-urlencoded这两种方式都可以去获取到请求信息保存请求的参数。在我使用postenctype="multipart/form-data"的时候读取不到上传文件数据,这里需要对socket做什么特殊的处理吗?
解决方案
解决方案二:
socket是对普通的TCP协议封装。而你说的GET/POST等操作是HTTP协议的;如果你要在普通的socket上面实现对GET/POST等命令的支持,首先就是要实现对HTTP协议的解析。然后获取客户端的命令,HTTP头以及相应的BODY。如果你是为了实现上传,那么建议用HTTPServer;如果是为了学习,看一下协议吧。
解决方案三:
引用1楼skgary的回复:
socket是对普通的TCP协议封装。而你说的GET/POST等操作是HTTP协议的;如果你要在普通的socket上面实现对GET/POST等命令的支持,首先就是要实现对HTTP协议的解析。然后获取客户端的命令,HTTP头以及相应的BODY。如果你是为了实现上传,那么建议用HTTPServer;如果是为了学习,看一下协议吧。
HTTP协议也是建立在TCP上的,不管我是否去解析,在我去接收一个HTTP协议的时候,我读取所有接收到的数据,那么我就应该能够读取到附加的上传文件吧。下面是我分别get和post测试时候接收到的数据:get请求:post未添加附件上传:当我添加了附件上传文件的时候只能接收到其他的参数和附件都无法读取到。
解决方案四:
这还是你读取的问题吧。后面应该还是有4K数据的。
时间: 2024-09-28 01:59:11