- 浏览: 735658 次
- 性别:
- 来自: 湖北
文章分类
最新评论
-
SE_XiaoFeng:
用mysqldump命令行导出。这个报错唉。错误提示信息如下: ...
linux下如何导入导出MySQL数据库 -
SE_XiaoFeng:
文章写的干脆了当,我喜欢!
linux下如何导入导出MySQL数据库 -
niky6688:
网站咋打不开呢
beckham herms birki ...
【原创】上周给公司新做了一个网站,请大家审阅! -
niky6688:
哈哈
new chanel bags 2012
burbe ...
今天我抢了一个咪咪??? -
ydsakyclguozi:
...
jsp资源管理器也可能是木马
- package test.io;
- import java.net.*;
- import java.io.*;
- /**
- * 一个简单的Socket实现的HTTP响应服务器。<br>
- * 只用于熟悉HTTP协议的目的,可以看到浏览器发过来的数据格式。
- *
- * @author 赵学庆 www.java2000.net
- */
- public class MyWebServer {
- public static void main(String[] args) {
- Socket socket = null;
- try {
- // 创建一个监听8000端口的服务器Socket
- ServerSocket s = new ServerSocket(8000, 3);
- System.out.println("MyWebServer等待来自浏览器的连接\n");
- while (true) {
- socket = s.accept();
- System.out.println("连接已建立。端口号:" + socket.getPort());
- new MyWebServerThread(socket).start();
- }
- } catch (IOException e) {
- e.printStackTrace();
- }
- }
- }
- class MyWebServerThread extends Thread {
- private Socket socket;
- MyWebServerThread(Socket socket) {
- this.socket = socket;
- }
- @Override
- public void run() {
- try {
- InputStreamReader is = new InputStreamReader(socket.getInputStream());
- char[] bs = new char[2048];
- PrintStream out;
- out = new PrintStream(socket.getOutputStream());
- StringBuilder msg = new StringBuilder();
- // 如果10毫秒还没有数据,则视同没有新的数据了。
- // 因为有Keep-Alive的缘故,浏览器可能不主动断开连接的。
- // 实际应用,会根据协议第一行是GET还是 POST确定。
- socket.setSoTimeout(10);
- //
- // 此处读入请求数据并做相应的处理
- //
- int len = -1;
- try {
- while ((len = is.read(bs)) != -1) {
- msg.append(bs, 0, len);
- msg.append("\n");
- }
- } catch (Exception ex) {
- // ex.printStackTrace();
- }
- // 下面是由服务器直接生成的主页内容
- // 1、首先向浏览器输出响应头信息
- out.println("HTTP/1.1 200 OK");
- out.println("Content-Type:text/html;charset:GBK");
- out.println();
- // 2、输出主页信息
- out
- .println("<HTML><BODY>"
- + "<center>"
- + "<H1>HTTP协议测试服务器,当前时间:"
- + new java.util.Date()
- + "</h1>"
- + "<form method='get'>username:<input type='text' name='username'/>password:<input type='text' name='password'/><input type='submit' value='GET测试'/></form><br/>"
- + "<form method='post'>username:<input type='text' name='username'/>password:<input type='text' name='password'/><input type='submit' value='POST测试'/></form><br/>"
- + "<form method='post' enctype='multipart/form-data'>phototitle:<input type='text' name='phototitle'/>photo:<input type='file' name='photo'/><input type='submit' value='Upload测试'/></form>"
- + "</center>您提交的数据如下:<pre>" + msg.toString() + "</pre></BODY></HTML>");
- out.flush();
- out.close();
- is.close();
- System.out.println("close");
- // 关闭连接
- socket.close();
- } catch (IOException e) {
- e.printStackTrace();
- }
- }
- }
package test.io; import java.net.*; import java.io.*; /** * 一个简单的Socket实现的HTTP响应服务器。<br> * 只用于熟悉HTTP协议的目的,可以看到浏览器发过来的数据格式。 * * @author */ public class MyWebServer { public static void main(String[] args) { Socket socket = null; try { // 创建一个监听8000端口的服务器Socket ServerSocket s = new ServerSocket(8000, 3); System.out.println("MyWebServer等待来自浏览器的连接\n"); while (true) { socket = s.accept(); System.out.println("连接已建立。端口号:" + socket.getPort()); new MyWebServerThread(socket).start(); } } catch (IOException e) { e.printStackTrace(); } } } class MyWebServerThread extends Thread { private Socket socket; MyWebServerThread(Socket socket) { this.socket = socket; } @Override public void run() { try { InputStreamReader is = new InputStreamReader(socket.getInputStream()); char[] bs = new char[2048]; PrintStream out; out = new PrintStream(socket.getOutputStream()); StringBuilder msg = new StringBuilder(); // 如果10毫秒还没有数据,则视同没有新的数据了。 // 因为有Keep-Alive的缘故,浏览器可能不主动断开连接的。 // 实际应用,会根据协议第一行是GET还是 POST确定。 socket.setSoTimeout(10); // // 此处读入请求数据并做相应的处理 // int len = -1; try { while ((len = is.read(bs)) != -1) { msg.append(bs, 0, len); msg.append("\n"); } } catch (Exception ex) { // ex.printStackTrace(); } // 下面是由服务器直接生成的主页内容 // 1、首先向浏览器输出响应头信息 out.println("HTTP/1.1 200 OK"); out.println("Content-Type:text/html;charset:GBK"); out.println(); // 2、输出主页信息 out .println("<HTML><BODY>" + "<center>" + "<H1>HTTP协议测试服务器,当前时间:" + new java.util.Date() + "</h1>" + "<form method='get'>username:<input type='text' name='username'/>password:<input type='text' name='password'/><input type='submit' value='GET测试'/></form><br/>" + "<form method='post'>username:<input type='text' name='username'/>password:<input type='text' name='password'/><input type='submit' value='POST测试'/></form><br/>" + "<form method='post' enctype='multipart/form-data'>phototitle:<input type='text' name='phototitle'/>photo:<input type='file' name='photo'/><input type='submit' value='Upload测试'/></form>" + "</center>您提交的数据如下:<pre>" + msg.toString() + "</pre></BODY></HTML>"); out.flush(); out.close(); is.close(); System.out.println("close"); // 关闭连接 socket.close(); } catch (IOException e) { e.printStackTrace(); } } }
运行结果
GET方法
引用:
GET /?username=111&password=222 HTTP/1.1
Host: 127.0.0.1:8000
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.2; zh-CN; rv:1.9.0.1) Gecko/2008070208 Firefox/3.0.1
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: zh-cn,zh;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: gb2312,utf-8;q=0.7,*;q=0.7
Keep-Alive: 300
Connection: keep-alive
Referer: http://127.0.0.1:8000/?username=1&password=2
POST方法
引用:
POST /?username=111&password=222 HTTP/1.1
Host: 127.0.0.1:8000
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.2; zh-CN; rv:1.9.0.1) Gecko/2008070208 Firefox/3.0.1
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: zh-cn,zh;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: gb2312,utf-8;q=0.7,*;q=0.7
Keep-Alive: 300
Connection: keep-alive
Referer: http://127.0.0.1:8000/?username=111&password=222
Content-Type: application/x-www-form-urlencoded
Content-Length: 25
username=111&password=222
UPLOAD
引用:
POST /?username=111&password=222 HTTP/1.1
Host: 127.0.0.1:8000
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.2; zh-CN; rv:1.9.0.1) Gecko/2008070208 Firefox/3.0.1
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: zh-cn,zh;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: gb2312,utf-8;q=0.7,*;q=0.7
Keep-Alive: 300
Connection: keep-alive
Referer: http://127.0.0.1:8000/?username=111&password=222
Content-Type: multipart/form-data; boundary=---------------------------23757983230932
Content-Length: 1704
-----------------------------23757983230932
Content-Disposition: form-data; name="phototitle"
12
-----------------------------23757983230932
Content-Disposition: form-data; name="photo"; filename="技术考核题.txt"
Content-Type: text/plain
技术考核
本次是个编程题,题目选Java/语言进行回答。
问题描述:
假设你的爱好是集邮。目前总共有N种不同的邮票,编号为从0到N-1.每种邮票的价钱被定义在数组int[] prices中(序号从0开始,数组的第i个元素表示第i种邮票的价格)。
你的目标是收集尽可能多种的邮票。你当前拥有的邮票存储在int[] have这个数组中。初始时,你没有钱,但是你可以卖掉已有邮票来买不同的邮票。返回你能收集到的不同种邮票的最大数量。
定义:
class: PostmarksCollection
method: numberOfDistinctPostmarks
Parameters: int[], int[]
Returns: int
Method signature: public int numberOfDistinctPostmarks(int[] prices, int[] have)
//为了进行测试,必须保证是public
约束:
1) N从1到50
2)prices中的元素数量刚好是N个元素
3)prices中的元素的值,从1到1,000,000
4)have中的元素数量是0个到N个
5)have中的每个元素是不同的
6)have中的每个元素的值是从0到N-1.
例如:
1)
{13,10,14,20}
{3,0,2,1}
Returns: 4
你已经拥有所有种类的邮票。
2)
{7,5,9,7}
{}
Returns: 0
你开始没有任何邮票,所以你也不能组任何事情。
3)
{4,13,9,1,5}
{1,3,2}
Returns: 4
卖掉邮票2,买入邮票0和4,(邮票2的价钱是9,邮票0的价钱是4,邮票4的价钱是5,卖掉2刚好买入0和4)
4)
{16,32,13,2,17,10,8,8,20,17}
{7,0,4,1,6,8}
Returns: 8
--------------------------------------------------------------------------------
使用Java请在此处答题(请使用JDK5.0编译,编译不能通过者不计算分数)
-----------------------------23757983230932--
发表评论
-
属性文件的读取 Java
2010-12-11 08:51 1192import java.util.ResourceBu ... -
【精华】Java项目生成静态页面
2010-12-11 08:47 1234需转载,请注明转载出处!本文地址: http://blog. ... -
【珍藏版】微软等数据结构+算法面试100题全部出炉[100题首次完整亮相]
2010-12-06 16:33 2874转至: http://blog.csdn.net/v_JULY ... -
【原创】Log4j 日志文件 使用
2010-12-02 11:37 1226log4j.properties 代码 log4j.ro ... -
【精华】保护自己的网站资源
2010-11-19 08:03 1200禁止用“另存为”保存页面 <head> < ... -
【精华】Window.Open()网页弹出窗口大全
2010-11-16 18:01 1563【1、最基本的弹出窗口代码】 <!--<br ... -
【精华】页面右下角弹出类似QQ或MSN的消息提示
2010-11-05 16:36 1017具体实现见 附件 主要是 针对 在框架中 如何实现 后下 ... -
【原创】苦恼了1个星期的DIV 滚动条置底, 今天终于实现了!!!
2010-11-05 10:58 3441<script type="text/ja ... -
【急救......】Could not find the main class.program will exit
2010-11-01 17:23 1630Java中Could not find the main cl ... -
屏蔽 F5 刷新键
2010-10-28 11:09 767<script language="JavaS ... -
web页面中按ESC关闭窗口
2010-10-28 11:04 1409<script language="jav ... -
web页面中如果想让用户复制页面内容粘贴时加入一些自定义信息
2010-10-28 11:04 853如果让用户复制你网站上的信息到别处粘贴时,附加自定义信息可以采 ... -
防止页面被多次提交
2010-10-28 11:03 18741. javascript ,设置一个变量,只允许提交一 ... -
Javascript打印代码
2010-10-18 14:38 895Javascript打印代码 实现打印功能的javasc ... -
【原创】struts+mysql+jsp 分页源码
2010-09-16 10:42 915具体代码见附件 一起学习,xf.zhouwenjun@163 ... -
【原创】struts 动态 设置radio 与 select 的默认值
2010-08-06 13:10 1643运行效果见 附件,有好的解决方法请分享xf.zhouwenju ... -
【原创】平时编码中积累的,非常好用,且很全的【时间工具类】
2010-07-21 17:42 888具体java类 请下载附件!烦请大家一起完善完善,请给我也分享 ... -
【原创】苦苦寻找的: ajax 定时读取数据,无刷新在页面显示
2010-07-19 17:17 1041demo 见附件 -
【绝】在web工程下 调用js 日历控件 报错【missing ( before function parameters)
2010-07-09 11:28 1106报错代码 function document.onclick( ... -
【精髓】非常好用的日历控件,可以自由的选择日期 时分秒
2010-07-09 10:57 17441、Calendar.js代码如下 省略! 具体内容 ...
相关推荐
接着定义了一个 `NameValueCollection` 对象用来存储要提交的数据,然后调用 `UploadValues` 方法发送 POST 请求并将服务器响应的数据打印出来。 #### 文件上传 除了普通的 POST 请求外,文件上传也是常见的一种...
Vue.js 是一个流行的前端框架,用于构建用户界面。在开发过程中,经常遇到跨域问题,因为浏览器的安全策略限制了不同源的HTTP请求。Vue.js 的官方推荐插件 Axios 通常用于处理HTTP请求,但默认情况下,它也会受到...
在HttpClient中,我们可以使用`HttpGet`类来创建一个GET请求: ```java // 创建HttpGet对象,指定URL HttpGet httpGet = new HttpGet("http://example.com/api/data"); // 设置HttpClient对象 CloseableHttpClient...
以下是一个使用HttpURLConnection的简单示例: ```java URL url = new URL("http://example.com/data"); HttpURLConnection connection = (HttpURLConnection) url.openConnection(); connection.setRequestMethod...
在提供的文件列表中,`http2.sln`是一个Visual Studio解决方案文件,很可能包含了实现上述功能的项目。`http2`可能是源代码文件,里面可能包含了具体的C++实现。通过打开并研究这个项目,你可以更直观地学习如何将...
文件 `HttpProc.cs` 是一个用于处理 HTTP 请求(GET 和 POST)的类库。它提供了多种方法来发送请求、下载文件、上传文件等。此文件由 He Daode 创建于 2007 年 9 月 1 日,主要用于实现 HTTP 协议中的 GET 和 POST ...
本主题聚焦于如何在C#环境下实现HTTP POST和GET方法的模拟登录,以完成与服务器端的交互。以下是对这个知识点的详细阐述: 首先,我们需要理解HTTP的基本概念。HTTP(超文本传输协议)是互联网上应用最广泛的一种...
libcurl是一个强大的URL传输库,支持多种协议,包括HTTP。首先,需要在VS2013项目中添加libcurl库的依赖,并配置相应的头文件路径和链接器设置。 下面是一段基本的C++代码示例,展示如何使用libcurl上传文件: ```...
这里,文件名被封装在POST数据中,使用`@`前缀表示这是一个文件。需要注意的是,`fsockopen`并不直接支持文件上传,而是将整个文件内容作为字符串传递。因此,服务器端需要正确解析并保存文件。 在服务器端,例如`...
AsyncHttpClient 是一个强大的异步HTTP客户端库,广泛用于Android和Java应用中,它允许开发者以非阻塞的方式发送HTTP请求并处理响应。这个库的主要优点是性能高效、线程安全并且易于使用。在这个主题中,我们将深入...
本文将深入探讨Android中基于Socket和HTTP的网络编程,包括它们的概念、实现方式以及如何构建一个完整的客户端代码。 1. Socket(套接字)网络编程: Socket是网络通信的基础,它提供了进程间通信的能力,使得运行...
在上面的代码中,`requests.get()`函数向指定URL发送GET请求,返回一个`Response`对象,其中包含了服务器的响应。`response.text`属性则可以获取服务器返回的文本内容。 2. POST请求 POST请求常用于向服务器提交...
Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境,它让开发者能够在服务器端使用 JavaScript 进行开发。Express 是一个基于 Node.js 平台的极简、灵活的 web 应用开发框架,它提供了一系列强大的特性,...
以下将详细解析如何使用C#实现POST请求,包括构造请求、设置参数、发送数据及处理响应。 ### C# POST请求的基本流程 1. **创建HTTP Web请求对象**:首先,需要创建一个`HttpWebRequest`对象,这可以通过调用`...
上述代码创建了一个`OkHttpClient`实例,构建了一个GET请求,并执行该请求得到响应。`execute()`方法会同步阻塞直到服务器返回响应。 ### POST请求 POST请求用于向服务器发送数据。在OKHttp3中,可以通过`Request...
"AFN Demo(GET,POST,上传,下载,断点续传,网络检测).zip"这个压缩包文件包含了一个关于AFNetworking的示例项目,展示了其核心功能,包括GET和POST请求、文件上传和下载以及断点续传和网络状态检测。...
在这个项目中,我们看到一个使用Boost.ASIO实现的Web服务器,它同时支持HTTP和HTTPS协议,这对于创建安全的Web服务至关重要。 首先,我们需要理解Boost.ASIO库的核心概念。ASIO代表Asynchronous Service Input/...
这个"testUpload上传下载实例"是一个Java实现的项目,它提供了一种有效处理文件上传和下载的方法。下面我们将深入探讨相关知识点。 1. **Java上传下载原理**: Java通过HTTP协议实现文件上传和下载。HTTP协议提供...
总结起来,在Android应用中,通过HTTP的GET和POST方法可以实现与服务器的双向通信。GET用于简单地获取信息,而POST则用于提交数据,包括文件上传。使用HttpURLConnection或第三方库如OkHttp可以简化这些操作,让...