Socket请求网页

Java Socket现实简单的HTTP服务 http://jiangzhengjun.iteye.com/blog/512380 Java socket 访问网页 http://blog.csdn.net/yilip/article/details/45195713 import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.InputStreamReader; import java.io.OutputStreamWriter; import java.net.Socket; public class WebpageSocket { private static int port = 80; private static String hostname = “www.iteye.com”; public static void main(String[] args) throws Exception{ Socket socket = new Socket(hostname, port); BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream(), “utf-8”)); writer.write(“GET ” + “/ask” + ” HTTP/1.0\r\n”); writer.write(“HOST:” + hostname + “\r\n”); writer.write(“Accept:*/*\r\n”); writer.write(“\r\n”); writer.flush(); BufferedReader reader = new BufferedReader(new InputStreamReader(socket.getInputStream(), “utf-8”)); String line = null; while ((line = reader.readLine()) != null) { System.out.println(line); } reader.close(); writer.close(); socket.close(); } } ...

2017年1月4日 · 3 分钟 · 天边的星星

WebSocket的C++服务器端实现

由于需要在项目中增加Websocket协议,与客户端进行通信,不想使用开源的库,比如WebSocketPP,就自己根据WebSocket协议实现一套函数,完全使用C++实现。 代码已经实现,放在个人github上面,地址:https://github.com/jice1001/websocket.git。下面进行解释说明: 一、原理 Websocket协议解析,已经在前面博客里面详细讲解过,可以参考博客http://www.cnblogs.com/jice1990/p/5435419.html,这里就不详细细说。 服务器端实现就是使用TCP协议,使用传统的socket流程进行绑定监听,使用epoll控制多路并发,收到Websocket握手包时候进行握手处理,握手成功便可进行数据收发。 二、实现 1、服务器监听 该部分使用的是TCP socket流程,首先是通过socket函数建立socket,通过bind函数绑定到某个端口,本例使用的是9000,然后通过listen函数开启监听,代码如下: ![复制代码](http://common.cnblogs.com/images/copycode.gif) listenfd_ = socket(AF_INET, SOCK_STREAM, 0); if(listenfd_ == -1){ DEBUG_LOG("创建套接字失败!"); return -1; } struct sockaddr_in server_addr; memset(&server_addr, 0, sizeof(sockaddr_in)); server_addr.sin_family = AF_INET; server_addr.sin_addr.s_addr = htonl(INADDR_ANY); server_addr.sin_port = htons(PORT); if(-1 == bind(listenfd_, (struct sockaddr *)(&server_addr), sizeof(server_addr))){ DEBUG_LOG("绑定套接字失败!"); return -1; } if(-1 == listen(listenfd_, 5)){ DEBUG_LOG("监听失败!"); return -1; } ![复制代码](http://common.cnblogs.com/images/copycode.gif) 2、epoll控制多路并发 ...

2016年9月11日 · 4 分钟 · 天边的星星

WebSocket心跳实现

//间隔发送心跳包数据给服务器,服务器在一定时间内发回心跳包响应,对比超时限定,如果超过设定的超时时间,则认为当前与服务器的websocket连接已经断开,关闭当前web socket连接,善后处理,例如重新连接,或者弹出提示…… function keepalive(ws) { var time = new Date(); //连接断开,可设置重连或者关闭连接 (“#keeplive_box”).html(“服务器没有响应.”).css({ “color” : “red” }); //ws.close(); } else {(“#keeplive_box”).html(“连接正常”).css({ “color” : “green” }); if (ws.bufferedAmount == 0) { ws.send(‘H#C’); } } } var ws = new WebSocket(to_url); ws.onopen = function () { (“#statustxt”).html(“connected.”);(“#send_btn”).attr(“disabled”, false); heartbeat_timer = setInterval(function () { keepalive(ws) }, 3000); }

2016年7月4日 · 1 分钟 · 天边的星星

WebSocket 的性能与压力测试

*原文* [http://chensd.com/2015-07/websocket-stress-test-and-performance-test.html](http://chensd.com/2015-07/websocket-stress-test-and-performance-test.html?utm_source=tuicool&utm_medium=referral) 主题 [WebSocket](http://www.tuicool.com/topics/11060032)[压力测试](http://www.tuicool.com/topics/11350019) 相对于短连接应用,长连接应用的测试要麻烦得多——尤其是性能和压力测试。此前,甚至从来没有给任何一个上线的 WebSocket 应用做过这方面的测试,前两天,看到有人在 [SegmentFault 上问](http://segmentfault.com/q/1010000003028043) 这方面的问题,刚好又有空,于是想着,还是来查查这方面的资料吧。在 Github 上一搜,还真有现成的工具,名字很简单,直接就叫[websocket-bench](https://github.com/M6Web/websocket-bench) , websocket-bench 是个用 Node.js 编写的命令行工具,可以对使用 Socket.io、[faye](https://github.com/faye/faye) 、 [Primus](https://github.com/primus/primus) 、 [WAMP](https://github.com/tavendo/WAMP) 编写的长连接应用进行性能和压力测试,用法和参数与 ab 差不多,多了一个指定连接成功后进行的操作的定义。 ### websocket-bench 安装 需要使用 npm 以全局的方式来安装 websocket-bench,当然要用阿里提供的 []福利服务器](http://npm.taobao.org/) ,如下: <div> <div> ``` npm install -g websocket-bench –registry=http://registry.npm.taobao.org </div> </div> ### 基本使用 这里以在 CentOS 6.5 上进行测试为便进行说明。首先要修改一下文件打开数,默认是1024,修改为一个比较大的值就行,总共65535个端口,我们测试也不会用太大的并发,websocket-bench 推荐设置的是 60000 ,命令如下: <div> <div> ``` ulimit -n 60000 </div> </div> websocket-bench 的参数与 ab 基本一致,像这样 <div> <div> ``` websocket-bench -a 300 -c 29 http://localhost:8100 -o opt.log ...

2016年6月6日 · 1 分钟 · 天边的星星

websocket开发第一篇

客户端与服务端基于HTTP和WebSocket网络协议来通讯,其中HTTP用于从客户端向服务端的请求,WebSocket用于从服务端向客户端的推送,因此服务器端需要支持HTTP和WebSocket两种协议。HTTP好说,所有Web服务器都支持,而支持WebSocket的倒不多。 Java阵营:Tomcat 7和Netty .Net阵营:System.Net.WebSockets Nodejs阵营:Socket.io WebSocket百度百科 1)Web通信的演进 2)WebSocket 3)WebSocket在Apache Tomcat 7(7.0.27 )的实现 4)怎样用Jaggery开发WebSocket特性 Tomcat 7中引入了WebSocket实现。下面我们先了解WebSocket的优缺点,其次简要介绍Apache Tomcat 7的WebSocket实现。 WebSocket的演进过程如图所示: 要知道在Tomcat 6中要实现双向HTTP通信,需要使用Tomcat的Comet处理模块。Comet有以下局限: 1)HTTP协议本身是请求/响应协议,而不是双向协议 2)代理和其它中间媒介不会工作的很好 3)在任何给定的时间只有某个方向的数据包传输 4)Servlet开发者要使用多线程很难 Servlet 3.0版引入了一个新特征:异步Servlet。我们把它与客户端的Ajax调用进行比较。异步Servlet会把请求悬挂起,直到响应准备好交付,无需在容器中使用worker线程。WebSockets是另一个尝试标准化的技术,它支持HTTP之上的异步、事件驱动和全双工通信。 WebSocket给我们带来了如下特性: 1)通过升级/交换HTTP协议,在HTTP之上提供全双工通信 2)基于消息/帧的通信 3)可以与代理和中间媒介一起工作 4)还可以不与代理和中间媒介一起工作 WebSocket的优点: 1)WebSocket是理想的,客户端和服务器之间不再需要长期运行的会话 2)WebSocket是HTTP协议之上的全双工通信 3)由于WebSocket是HTTP握手初始化之后的TCP之上的协议,所以你只需做两件事: 发送消息 接收消息

2014年5月20日 · 1 分钟 · 天边的星星