日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷解決方案
JavaSocket應(yīng)答與HTTP服務(wù)器的瓜葛

Java Socket應(yīng)答一直伴隨著我們的編程生活,在不斷的發(fā)展中有很多知識(shí)需要我們學(xué)習(xí)。下面我們就先來看看有關(guān)Java Socket應(yīng)答的代碼,有點(diǎn)長(zhǎng),但是看下去就會(huì)讓你豁然開朗。

公司主營(yíng)業(yè)務(wù):網(wǎng)站建設(shè)、網(wǎng)站制作、移動(dòng)網(wǎng)站開發(fā)等業(yè)務(wù)。幫助企業(yè)客戶真正實(shí)現(xiàn)互聯(lián)網(wǎng)宣傳,提高企業(yè)的競(jìng)爭(zhēng)能力。創(chuàng)新互聯(lián)是一支青春激揚(yáng)、勤奮敬業(yè)、活力青春激揚(yáng)、勤奮敬業(yè)、活力澎湃、和諧高效的團(tuán)隊(duì)。公司秉承以“開放、自由、嚴(yán)謹(jǐn)、自律”為核心的企業(yè)文化,感謝他們對(duì)我們的高要求,感謝他們從不同領(lǐng)域給我們帶來的挑戰(zhàn),讓我們激情的團(tuán)隊(duì)有機(jī)會(huì)用頭腦與智慧不斷的給客戶帶來驚喜。創(chuàng)新互聯(lián)推出吳堡免費(fèi)做網(wǎng)站回饋大家。

HTTP/1.1表示這個(gè)HTTP服務(wù)器是1.1版,200是服務(wù)器對(duì)客戶請(qǐng)求的應(yīng)答狀態(tài)碼,OK是對(duì)應(yīng)答狀態(tài)碼的解釋,之后是這個(gè)文檔的元信息和文檔正文。(相關(guān)應(yīng)答狀態(tài)碼和元信息的解釋請(qǐng)參閱Inetrnet標(biāo)準(zhǔn)草案:RFC2616)。

 
 
 
  1. Http.java 
  2. import java.net.*; 
  3. import java.io.*; 
  4. import java.util.Properties; 
  5. import java.util.Enumeration; 
  6. public class Http { 
  7. protected Socket client; 
  8. protected BufferedOutputStream sender; 
  9. protected BufferedInputStream receiver; 
  10. protected ByteArrayInputStream byteStream; 
  11. protected URL target; 
  12. private int responseCode=-1; 
  13. private String responseMessage=""; 
  14. private String serverVersion=""; 
  15. private Properties header = new Properties(); 
  16. public Http() { } 
  17. public Http(String url) { 
  18. GET(url) ; 
  19. /* GET方法根據(jù)URL,會(huì)請(qǐng)求文件、數(shù)據(jù)庫查詢結(jié)果、程序運(yùn)行結(jié)果等多種內(nèi)容 */ 
  20. public void GET(String url) { 
  21. try { 
  22. checkHTTP(url); 
  23. openServer(target.getHost(),target.getPort() ); 
  24. String cmd = "GET "+ getURLFormat(target) +" HTTP/1.0\r\n" 
  25. + getBaseHeads()+"\r\n"; 
  26. sendMessage(cmd); 
  27. receiveMessage(); 
  28. } catch(ProtocolException p) { 
  29. p.printStackTrace(); 
  30. return; 
  31. } catch(UnknownHostException e) { 
  32. e.printStackTrace(); 
  33. return; 
  34. } catch(IOException i) { 
  35. i.printStackTrace(); 
  36. return; 
  37. /* 
  38. * HEAD方法只請(qǐng)求URL的元信息,不包括URL本身。若懷疑本機(jī)和服務(wù)器上的 
  39. * 文件相同,用這個(gè)方法檢查最快捷有效。 
  40. */ 
  41. public void HEAD(String url) { 
  42. try { 
  43. checkHTTP(url); 
  44. openServer(target.getHost(),target.getPort() ); 
  45. String cmd = "HEAD "+getURLFormat(target)+" HTTP/1.0\r\n" 
  46. +getBaseHeads()+"\r\n"; 
  47. sendMessage(cmd); 
  48. receiveMessage(); 
  49. }catch(ProtocolException p) { 
  50. p.printStackTrace(); 
  51. return; 
  52. }catch(UnknownHostException e) { 
  53. e.printStackTrace(); 
  54. return; 
  55. }catch(IOException i) { 
  56. i.printStackTrace(); 
  57. return; 
  58. /* 
  59. * POST方法是向服務(wù)器傳送數(shù)據(jù),以便服務(wù)器做出相應(yīng)的處理。例如網(wǎng)頁上常用的 
  60. * 提交表格。 
  61. */ 
  62. public void POST(String url,String content) { 
  63. try { 
  64. checkHTTP(url); 
  65. openServer(target.getHost(),target.getPort() ); 
  66. String cmd = "POST "+ getURLFormat(target) +"HTTP/1.0\r\n"+getBaseHeads(); 
  67. cmd += "Content-type: application/x-www-form-urlencoded\r\n"; 
  68. cmd += "Content-length: " + content.length() + "\r\n\r\n"; 
  69. cmd += content+"\r\n"; 
  70. sendMessage(cmd); 
  71. receiveMessage(); 
  72. }catch(ProtocolException p) { 
  73. p.printStackTrace(); 
  74. return; 
  75. }catch(UnknownHostException e) { 
  76. e.printStackTrace(); 
  77. return; 
  78. }catch(IOException i) { 
  79. i.printStackTrace(); 
  80. return; 
  81. protected void checkHTTP(String url) throws ProtocolException { 
  82. try { 
  83. URL target = new URL(url); 
  84. if(target==null || !target.getProtocol().toUpperCase().equals("HTTP") ) 
  85. throw new ProtocolException("這不是HTTP協(xié)議"); 
  86. this.target = target; 
  87. } catch(MalformedURLException m) { 
  88. throw new ProtocolException("協(xié)議格式錯(cuò)誤"); 
  89. /* 
  90. * 與Web服務(wù)器連接。若找不到Web服務(wù)器,InetAddress會(huì)引發(fā)UnknownHostException 
  91. * 異常。若Socket連接失敗,會(huì)引發(fā)IOException異常。 
  92. */ 
  93. protected void openServer(String host,int port) throws 
  94. UnknownHostException,IOException { 
  95. header.clear(); 
  96. responseMessage=""; responseCode=-1; 
  97. try { 
  98. if(client!=null) closeServer(); 
  99. if(byteStream != null) { 
  100. byteStream.close(); byteStream=null; 
  101. InetAddress address = InetAddress.getByName(host); 
  102. client = new Socket(address,port==-1?80:port); 
  103. sender = new BufferedOutputStream(client.getOutputStream()); 
  104. receiver = new BufferedInputStream(client.getInputStream()); 
  105. }catch(UnknownHostException u) { 
  106. throw u; 
  107. }catch(IOException i) { 
  108. throw i; 
  109. /* 關(guān)閉與Web服務(wù)器的連接 */ 
  110. protected void closeServer() throws IOException { 
  111. if(client==null) return; 
  112. try { 
  113. client.close(); sender.close(); receiver.close(); 
  114. } catch(IOException i) { 
  115. throw i; 
  116. client=null; sender=null; receiver=null; 
  117. protected String getURLFormat(URL target) { 
  118. String spec = "http:// 
  119. +target.getHost(); 
  120. if(target.getPort()!=-1) 
  121. spec+=":"+target.getPort(); 
  122. return spec+=target.getFile(); 
  123. /* 向Web服務(wù)器傳送數(shù)據(jù) */ 
  124. protected void sendMessage(String data) throws IOException{ 
  125. sender.write(data.getBytes(),0,data.length()); 
  126. sender.flush(); 
  127. /* 接收來自Web服務(wù)器的數(shù)據(jù) */ 
  128. protected void receiveMessage() throws IOException{ 
  129. byte data[] = new byte[1024]; 
  130. int count=0; 
  131. int word=-1; 
  132. // 解析***行 
  133. while( (word=receiver.read())!=-1 ) { 
  134. if(word=='\r'||word=='\n') { 
  135. word=receiver.read(); 
  136. if(word=='\n') word=receiver.read(); 
  137. break; 
  138. if(count == data.length) data = addCapacity(data); 
  139. data[count++]=(byte)word; 
  140. String message = new String(data,0,count); 
  141. int mark = message.indexOf(32); 
  142. serverVersion = message.substring(0,mark); 
  143. while( mark
  144. responseCode = Integer.parseInt(message.substring(mark+1,mark+=4)); 
  145. responseMessage = message.substring(mark,message.length()).trim(); 
  146. // 應(yīng)答狀態(tài)碼和處理請(qǐng)讀者添加 
  147. switch(responseCode) { 
  148. case 400: 
  149. throw new IOException("錯(cuò)誤請(qǐng)求"); 
  150. case 404: 
  151. throw new FileNotFoundException( getURLFormat(target) ); 
  152. case 503: 
  153. throw new IOException("服務(wù)器不可用" ); 
  154. if(word==-1) throw new ProtocolException("信息接收異常終止"); 
  155. int symbol=-1; 
  156. count=0; 
  157. // 解析元信息 
  158. while( word!='\r' && word!='\n' && word>-1) { 
  159. if(word=='\t') word=32; 
  160. if(count==data.length) data = addCapacity(data); 
  161. data[count++] = (byte)word; 
  162. parseLine: { 
  163. while( (symbol=receiver.read()) >-1 ) { 
  164. switch(symbol) { 
  165. case '\t': 
  166. symbol=32; break; 
  167. case '\r': 
  168. case '\n': 
  169. word = receiver.read(); 
  170. if( symbol=='\r' && word=='\n') { 
  171. word=receiver.read(); 
  172. if(word=='\r') word=receiver.read(); 
  173. if( word=='\r' || word=='\n' || word>32) break parseLine; 
  174. symbol=32; break; 
  175. if(count==data.length) data = addCapacity(data); 
  176. data[count++] = (byte)symbol; 
  177. word=-1; 
  178. message = new String(data,0,count); 
  179. mark = message.indexOf(':'); 
  180. String key = null; 
  181. if(mark>0) key = message.substring(0,mark); 
  182. mark++; 
  183. while( mark
  184. String value = message.substring(mark,message.length() ); 
  185. header.put(key,value); 
  186. count=0; 
  187. // 獲得正文數(shù)據(jù) 
  188. while( (word=receiver.read())!=-1) { 
  189. if(count == data.length) data = addCapacity(data); 
  190. data[count++] = (byte)word; 
  191. if(count>0) byteStream = new ByteArrayInputStream(data,0,count); 
  192. data=null; 
  193. closeServer(); 
  194. public String getResponseMessage() { 
  195. return responseMessage; 
  196. public int getResponseCode() { 
  197. return responseCode; 
  198. public String getServerVersion() { 
  199. return serverVersion; 
  200. public InputStream getInputStream() { 
  201. return byteStream; 
  202. public synchronized String getHeaderKey(int i) { 
  203. if(i>=header.size()) return null; 
  204. Enumeration enum = header.propertyNames(); 
  205. String key = null; 
  206. for(int j=0; j<=i; j++) 
  207. key = (String)enum.nextElement(); 
  208. return key; 
  209. public synchronized String getHeaderValue(int i) { 
  210. if(i>=header.size()) return null; 
  211. return header.getProperty(getHeaderKey(i)); 
  212. public synchronized String getHeaderValue(String key) { 
  213. return header.getProperty(key); 
  214. protected String getBaseHeads() { 
  215. String inf = "User-Agent: myselfHttp/1.0\r\n"+ 
  216. "Accept: www/source; text/html; image/gif; */*\r\n"; 
  217. return inf; 
  218. private byte[] addCapacity(byte rece[]){ 
  219. byte temp[] = new byte[rece.length+1024]; 
  220. System.arraycopy(rece,0,temp,0,rece.length); 
  221. return temp; 
  222. public static void main(String[] args) { 
  223. Http http=new Http(); 
  224. //http.GET("http://192.168.1.5 
  225. ); 
  226. int i; 
  227. for (i=0; i<50000; i++) { 
  228. http.GET("http://www.model-dl.com/modelinfo.asp?modelid=101 ); 
  229. http.POST("http://www.model-dl.com/modelinfo.asp?modelid=101,"ratecontd=101&MM_insert=form1 "); 
  230. }

以上就是對(duì)Java Socket應(yīng)答的相關(guān)介紹,希望大家有所發(fā)現(xiàn)。


文章標(biāo)題:JavaSocket應(yīng)答與HTTP服務(wù)器的瓜葛
鏈接URL:http://www.5511xx.com/article/djgeepj.html