Java Socket应答怎么实现
发表于:2026-10-31 作者:千家信息网编辑
千家信息网最后更新 2026年10月31日,本篇内容主要讲解"Java Socket应答怎么实现",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"Java Socket应答怎么实现"吧!HTTP/1.1
千家信息网最后更新 2026年10月31日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( mark0) 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安全错误
数据库的锁怎样保障安全
上海卓越科技互联网
互联网科技小贷
北京禾田雨橡互联网科技
互联网科技logo设计
长亮科技互联网金融
互联网科技宣传片
上海电发互联网科技有限公司
中化能源互联网科技招聘
互联网为啥属于高科技
南平创想时代互联网科技有限公司
消费医药和互联网科技
佛山市翊博互联网络科技有限公司
深圳市罗太互联网科技有限公司
山东有哪些互联网科技公司
江苏苏星互联网科技有限公司
宇信科技在杭州互联网排第几
互联网金融运营模式中的金融科技
互联网时代高科技布局
马化腾互联网科技教学
长沙易易互联网科技有限公司
一五八零互联网科技
佩信高科技互联网
恒生科技互联网指数分析
互联网系的金融科技公司
杭州壁岐互联网科技有限公司
链环科技传统企业怎么转型互联网
互联网科技人工智能实验室
互联网第三次科技革命特征
优雇互联网科技有限公司
互联网 科技节活动 微视频大赛