资源简介
疯狂HTML5CSS3JavaScript讲义_源码
代码片段和文件信息
import java.io.*;
import java.net.*;
import java.nio.charset.Charset;
import java.security.MessageDigest;
import java.util.regex.*;
import java.util.*;
import sun.misc.base64Encoder;
/**
* Description:
*
网站: 疯狂Java联盟
*
Copyright (C) 2001-2012 Yeeku.H.Lee
*
This program is protected by copyright laws.
*
Program Name:
*
Date:
* @author Yeeku.H.Lee kongyeeku@163.com
* @version 1.0
*/
public class ChatServer
{
// 记录所有的客户端Soccket
public static List clientSockets
= new ArrayList();
public ChatServer()throws IOException
{
// 创建ServerSocket,准备接受客户端连接
ServerSocket ss = new ServerSocket(30000);
while(true)
{
// 接收到客户端连接
Socket socket = ss.accept();
// 将客户端Socket添加到clientSockets集合中
clientSockets.add(socket);
// 启动线程
new ServerThread(socket).start();
}
}
public static void main(String[] args)
throws Exception
{
new ChatServer();
}
}
class ServerThread extends Thread
{
private Socket socket;
public ServerThread(Socket socket)
{
this.socket = socket;
}
public void run()
{
try
{
// 得到Socket对应的输入流
InputStream in = socket.getInputStream();
// 得到Socket对应的输出流
OutputStream out = socket.getOutputStream();
byte[] buff = new byte[1024];
String req = ““;
// 读取数据,此时建立与WebSocket的“握手“。
int count = in.read(buff);
// 如果读取的数据长度大于0
if(count > 0)
{
// 将读取的数据转化为字符串
req = new String(buff 0 count);
System.out.println(“握手请求:“ + req);
// 获取WebSocket的key
String secKey = getSecWebSocketKey(req);
System.out.println(“secKey = “ + secKey);
String response = “HTTP/1.1 101 Switching Protocols\r\nUpgrade: “
+ “websocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: “
+ getSecWebSocketAccept(secKey) + “\r\n\r\n“;
System.out.println(“secAccept = “ + getSecWebSocketAccept(secKey));
out.write(response.getBytes());
}
int hasRead = 0;
// 不断读取WebSocket发送过来的数据
while((hasRead = in.read(buff)) > 0)
{
System.out.println(“接收的字节数:“ + hasRead);
/*
因为WebSocket发送过来的数据遵循了一定的协议格式,
其中第3个~第6个字节是数据掩码。
从第7个字节开始才是真正的有效数据。
因此程序使用第3个~第6个字节对后面的数据进行了处理
*/
for (int i = 0 ; i < hasRead - 6 ; i++ )
{
buff[i + 6] = (byte) (buff[i % 4 + 2] ^ buff[i + 6]);
}
// 获得从浏览器发送过来的数据
String pushMsg = new String(buff
6 hasRead - 6 “UTF-8“);
// 遍历Socket集合,依次向每个Socket发送数据
for (Iterator it = ChatServer.clientSockets.iterator()
; it.hasNext() ;)
{
try
{
Socket s = it.next();
// 发送数据时,第一个字节必须与读到的第一个字节相同
byte[] pushHead = new byte[2];
pushHead[0] = buff[0];
// 发送数据时,第二个字节记录发送数据的长度
pushHead[1] = (byte) pushMsg.getBytes(“UTF-8“).length;
// 发送前两个字节
s.getOutputStream().write(pushHead);
// 发送有效数据
s.getOutputStream().write(pushMsg.get
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2013-08-17 20:51 01\
目录 0 2013-08-17 20:51 01\1.1\
文件 75 2012-01-10 16:36 01\1.1\bad.html
文件 86 2012-01-10 16:22 01\1.1\qs.html
目录 0 2013-08-17 20:51 01\1.2\
文件 318 2012-01-12 18:28 01\1.2\autofocus.html
文件 616 2012-01-12 18:33 01\1.2\focus.html
目录 0 2013-08-17 20:51 01\1.3\
文件 113 2012-01-12 00:16 01\1.3\missTag.html
目录 0 2013-08-17 20:51 01\1.3\my images\
文件 22620 2011-11-02 22:52 01\1.3\my images\android.png
文件 5632 2012-04-27 14:23 01\1.3\my images\Thumbs.db
文件 252 2012-01-11 23:45 01\1.3\noCase.html
文件 394 2012-01-12 16:59 01\1.3\noQuote.html
文件 276 2012-01-13 12:56 01\1.3\noQuoteError.html
文件 338 2012-01-12 16:29 01\1.3\proptest.html
目录 0 2013-08-17 20:51 02\
目录 0 2013-08-17 20:51 02\2.1\
文件 643 2012-02-23 09:32 02\2.1\anchor.html
文件 821 2012-01-13 13:10 02\2.1\basic.html
文件 297 2012-01-13 16:17 02\2.1\if
目录 0 2013-08-17 20:51 02\2.1\images\
文件 35767 2008-06-17 12:15 02\2.1\images\logo.jpg
文件 865 2012-01-13 13:47 02\2.1\img.html
文件 808 2012-01-13 16:23 02\2.1\list.html
文件 1948 2012-02-23 09:10 02\2.1\semantic.html
文件 497 2012-01-13 15:01 02\2.1\simpleTable.html
文件 512 2012-01-13 15:05 02\2.1\tablespan.html
文件 645 2012-01-13 15:17 02\2.1\tablewithbody.html
文件 1075 2012-01-13 15:58 02\2.1\tablewithcol.html
文件 762 2012-01-13 13:24 02\2.1\text.html
............此处省略526个文件信息
相关资源
- BOSS - Multipurpose Template
- Html5代码_微信H5微场景10个)源码
- HTML5+CSS3网站设计基础教程 传智播客全
- html静态网页导航条、表格、表单、音
- 15套HTML5微场景源码
- html5-bluetooth-demo
- div+css网页制作模板素材
- H5期末大作业,H5期末课程设计
- 响应式web开发项目教程-源代码.zip
- 用html5开发一个个人网站,多个网页
-
精通HTML5+CSS3+ja
vasc ript(pdf版) - 200个HTML5微信小游戏源码
- html5 四套皮肤模版 非常美观大方 适合
- HTML5与CSS3权威指南第3版上-陆凌牛
- HTML5网页大赛作品
- HTML经典案例(包含静态、动态)
- 2019年web前端开发技术课件、习题答案
- 花钱购买的企业级后台模板主题
- html5网页前端设计案例
- 30个html5手机网站源码
- HTML5+CSS3+jQuery Mobile轻松构造APP与移动
- html5视频播放器
- Head First HTML5 Programming中文版,高清完
- html5+css3+jquery网页模板
- HTML5高级程序设计第2版清晰PDF+随书源
- 网页设计期末 大作业.zip
- Web前端设计与开发的相关学习资料
-
playease.js:HTML5 Media Pla
yer,支持FL - HTML5 Canvas 开发详解(第二版)高清完
- 电影 v8.0电影网站源码打包
评论
共有 条评论