Java Socket应答怎么实现
发表于:2025-01-16 作者:千家信息网编辑
千家信息网最后更新 2025年01月16日,本篇内容主要讲解"Java Socket应答怎么实现",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"Java Socket应答怎么实现"吧!HTTP/1.1
千家信息网最后更新 2025年01月16日Java Socket应答怎么实现
本篇内容主要讲解"Java Socket应答怎么实现",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"Java Socket应答怎么实现"吧!
HTTP/1.1表示这个HTTP服务器是1.1版,200是服务器对客户请求的应答状态码,OK是对应答状态码的解释,之后是这个文档的元信息和文档正文。(相关应答状态码和元信息的解释请参阅Inetrnet标准草案:RFC2616)。
Http.java import java.net.*; import java.io.*; import java.util.Properties; import java.util.Enumeration; public class Http { protected Socket client; protected BufferedOutputStream sender; protected BufferedInputStream receiver; protected ByteArrayInputStream byteStream; protected URL target; private int responseCode=-1; private String responseMessage=""; private String serverVersion=""; private Properties header = new Properties(); public Http() { } public Http(String url) { GET(url) ; } /* GET方法根据URL,会请求文件、数据库查询结果、程序运行结果等多种内容 */ public void GET(String url) { try { checkHTTP(url); openServer(target.getHost(),target.getPort() ); String cmd = "GET "+ getURLFormat(target) +" HTTP/1.0\r\n" + getBaseHeads()+"\r\n"; sendMessage(cmd); receiveMessage(); } catch(ProtocolException p) { p.printStackTrace(); return; } catch(UnknownHostException e) { e.printStackTrace(); return; } catch(IOException i) { i.printStackTrace(); return; } } /* * HEAD方法只请求URL的元信息,不包括URL本身。若怀疑本机和服务器上的 * 文件相同,用这个方法检查最快捷有效。 */ public void HEAD(String url) { try { checkHTTP(url); openServer(target.getHost(),target.getPort() ); String cmd = "HEAD "+getURLFormat(target)+" HTTP/1.0\r\n" +getBaseHeads()+"\r\n"; sendMessage(cmd); receiveMessage(); }catch(ProtocolException p) { p.printStackTrace(); return; }catch(UnknownHostException e) { e.printStackTrace(); return; }catch(IOException i) { i.printStackTrace(); return; } } /* * POST方法是向服务器传送数据,以便服务器做出相应的处理。例如网页上常用的 * 提交表格。 */ public void POST(String url,String content) { try { checkHTTP(url); openServer(target.getHost(),target.getPort() ); String cmd = "POST "+ getURLFormat(target) +"HTTP/1.0\r\n"+getBaseHeads(); cmd += "Content-type: application/x-www-form-urlencoded\r\n"; cmd += "Content-length: " + content.length() + "\r\n\r\n"; cmd += content+"\r\n"; sendMessage(cmd); receiveMessage(); }catch(ProtocolException p) { p.printStackTrace(); return; }catch(UnknownHostException e) { e.printStackTrace(); return; }catch(IOException i) { i.printStackTrace(); return; } } protected void checkHTTP(String url) throws ProtocolException { try { URL target = new URL(url); if(target==null || !target.getProtocol().toUpperCase().equals("HTTP") ) throw new ProtocolException("这不是HTTP协议"); this.target = target; } catch(MalformedURLException m) { throw new ProtocolException("协议格式错误"); } } /* * 与Web服务器连接。若找不到Web服务器,InetAddress会引发UnknownHostException * 异常。若Socket连接失败,会引发IOException异常。 */ protected void openServer(String host,int port) throws UnknownHostException,IOException { header.clear(); responseMessage=""; responseCode=-1; try { if(client!=null) closeServer(); if(byteStream != null) { byteStream.close(); byteStream=null; } InetAddress address = InetAddress.getByName(host); client = new Socket(address,port==-1?80:port); sender = new BufferedOutputStream(client.getOutputStream()); receiver = new BufferedInputStream(client.getInputStream()); }catch(UnknownHostException u) { throw u; }catch(IOException i) { throw i; } } /* 关闭与Web服务器的连接 */ protected void closeServer() throws IOException { if(client==null) return; try { client.close(); sender.close(); receiver.close(); } catch(IOException i) { throw i; } client=null; sender=null; receiver=null; } protected String getURLFormat(URL target) { String spec = "http:// +target.getHost(); if(target.getPort()!=-1) spec+=":"+target.getPort(); return spec+=target.getFile(); } /* 向Web服务器传送数据 */ protected void sendMessage(String data) throws IOException{ sender.write(data.getBytes(),0,data.length()); sender.flush(); } /* 接收来自Web服务器的数据 */ protected void receiveMessage() throws IOException{ byte data[] = new byte[1024]; int count=0; int word=-1; // 解析***行 while( (word=receiver.read())!=-1 ) { if(word=='\r'||word=='\n') { word=receiver.read(); if(word=='\n') word=receiver.read(); break; } if(count == data.length) data = addCapacity(data); data[count++]=(byte)word; } String message = new String(data,0,count); int mark = message.indexOf(32); serverVersion = message.substring(0,mark); while( mark-1) { if(word=='\t') word=32; if(count==data.length) data = addCapacity(data); data[count++] = (byte)word; parseLine: { while( (symbol=receiver.read()) >-1 ) { switch(symbol) { case '\t': symbol=32; break; case '\r': case '\n': word = receiver.read(); if( symbol=='\r' && word=='\n') { word=receiver.read(); if(word=='\r') word=receiver.read(); } if( word=='\r' || word=='\n' || word>32) break parseLine; symbol=32; break; } if(count==data.length) data = addCapacity(data); data[count++] = (byte)symbol; } word=-1; } message = new String(data,0,count); mark = message.indexOf(':'); String key = null; if(mark>0) key = message.substring(0,mark); mark++; while( mark 0) byteStream = new ByteArrayInputStream(data,0,count); data=null; closeServer(); } public String getResponseMessage() { return responseMessage; } public int getResponseCode() { return responseCode; } public String getServerVersion() { return serverVersion; } public InputStream getInputStream() { return byteStream; } public synchronized String getHeaderKey(int i) { if(i>=header.size()) return null; Enumeration enum = header.propertyNames(); String key = null; for(int j=0; j<=i; j++) key = (String)enum.nextElement(); return key; } public synchronized String getHeaderValue(int i) { if(i>=header.size()) return null; return header.getProperty(getHeaderKey(i)); } public synchronized String getHeaderValue(String key) { return header.getProperty(key); } protected String getBaseHeads() { String inf = "User-Agent: myselfHttp/1.0\r\n"+ "Accept: www/source; text/html; image/gif; */*\r\n"; return inf; } private byte[] addCapacity(byte rece[]){ byte temp[] = new byte[rece.length+1024]; System.arraycopy(rece,0,temp,0,rece.length); return temp; } public static void main(String[] args) { Http http=new Http(); //http.GET("http://192.168.1.5 ); int i; for (i=0; i<50000; i++) { http.GET("http://www.model-dl.com/modelinfo.asp?modelid=101 ); http.POST("http://www.model-dl.com/modelinfo.asp?modelid=101,"ratecontd=101&MM_insert=form1 "); } } }
到此,相信大家对"Java Socket应答怎么实现"有了更深的了解,不妨来实际操作一番吧!这里是网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!
服务器
服务
方法
数据
信息
内容
状态
文件
文档
结果
学习
查询
解释
实用
更深
有效
相同
这不
兴趣
多种
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
数据库一对多主外键关联查询
永航汽车维修资料软件开发公司
数据库进入目录命令
学习计算机网络技术面试什么
推送消息服务器吗
贵州6频道网络安全
网络安全专项清查
全球最大学位论文数据库
华为 戴尔 服务器
服务器上怎么显示地址
网络安全工程师学习难吗
如何把服务器改成电脑的内存
网络安全审查办法提出建议
竹溪专业软件开发经验丰富
数据库检测点
华为服务器的管理口在哪
web服务器只读文件权限
手机软件开发与推广范围
服务器安全加固合同
网络技术会考试题
如何启动web服务器
数据库sql语义分析
数据库关系模式改进方法
数据库sa登录失败怎么调
魔兽怀旧服服务器维护多长时间
机器学习框架下数据库学习
上海神之力网络技术中心
剑阁在行动网络安全宣传
电脑怎么查看数据库
互联网银行科技输出