亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? ppg.java

?? Java的wap push
?? JAVA
字號:
package push;import javax.servlet.*;import javax.servlet.http.*;import java.net.*;import java.io.*;import java.util.StringTokenizer;/** * <code>PPG</code> class implements some push proxy gateway (PPG) functionality * for the purposes of this example only. This simple PPG is targeted to be used * in conjunction with WAP toolkit, and IPv4 type client addressing. *  */public final class PPG extends HttpServlet {	/* xml version */	private final static String XML_VERSION = "<?xml version=\"1.0\"?>";	/* Push Access Protocol (PAP) document type */	private final static String PAP_DOCTYPE = "<!DOCTYPE pap PUBLIC \"-//WAPFORUM//DTD PAP 1.0//EN\" \"http://www.wapforum.org/DTD/pap_1.0.dtd\" >";	/* content type of the push request multipart body */	private final static String CONTENT_TYPE = "multipart/related; boundary=multipart-boundary; type=\"application/xml\"";	/*	 * WAP Push connection less service (client side). The registered port	 * number.	 */	private static final int connectionlessPushPort = 2948;	private static int transactionId = 0;	/**	 * <code>doPost</code>	 * 	 * @param request	 *            a <code>HttpServletRequest</code> value	 * @param response	 *            a <code>HttpServletResponse</code> value	 * @exception ServletException	 *                if an error occurs	 * @exception IOException	 *                if an error occurs	 */	public void doPost(HttpServletRequest request, HttpServletResponse response)			throws ServletException, IOException {		String clientAddress = null;		String pushId = null;		int resultCode = 1001; // accepted for processing		try {			// first, check the content type which should be "multipart/related"			String contentType = request.getHeader("content-type");			StringTokenizer st = new StringTokenizer(contentType, ";");			String token = st.nextToken();			String boundary = null;			if (!token.equalsIgnoreCase("multipart/related"))				throw new Exception("wrong content type");			// finds the boundary string			while (st.hasMoreTokens()) {				token = st.nextToken().trim();				if (token.startsWith("boundary=")) {					boundary = token.substring(9);					break;				}			}			if (boundary == null)				throw new Exception("no multipart boundary");			boundary = "--" + boundary;			String endBoundary = boundary + "--";			StringBuffer messageContent = new StringBuffer();			BufferedReader in = request.getReader();			String line;			int i = 0;			boolean startContent = false;			System.out.println("boundary=" + boundary);			// extract message content part			while ((line = in.readLine()) != null) {				if (line.equals(boundary))					++i;				else if (line.equals(endBoundary))					break;				if (i == 1) { // PAP control entity					int j = line.indexOf("address-value=");					if (j >= 0) {						clientAddress = line.substring(j + 15, line.indexOf(								'"', j + 17));					}					j = line.indexOf("push-id=");					if (j >= 0) {						pushId = line.substring(j + 9, line								.indexOf('"', j + 11));					}				} else if (i == 2) { // PAP content entity					if (startContent)						messageContent.append(line);					else if (line.trim().equals("")) // end of headers						startContent = true;					else if (line.toLowerCase().startsWith("content-type:"))						contentType = line.substring(13).trim();				}			}			if ((i = clientAddress.indexOf("/TYPE=IPv4")) == -1) {				resultCode = 2002; // address error				throw new Exception(						"This PPG can handle only IPv4 type addresses");			}			clientAddress = clientAddress.substring(clientAddress					.indexOf("WAPPUSH=") + 8, i);			if (clientAddress == null) {				resultCode = 2002; // address error				throw new Exception("Client address is not known");			}			System.out.println("clientAddress: " + clientAddress);			System.out.println("pushId: " + pushId);			System.out.println("message content: " + messageContent);			unitPushRequest(clientAddress, messageContent.toString().trim(),					contentType);		} catch (Exception e) {			System.err.println(e);			if (resultCode < 2000)				resultCode = 2000; // bad message		}		// start writing the result		response.setStatus(202); // accepted		response.setContentType("application/xml");		PrintWriter out = response.getWriter();		out.println(XML_VERSION);		out.println(PAP_DOCTYPE);		out.println("<pap product-name=\"MobileZoo PPG\">");		out.println("  <push-response push-id=\"" + pushId + "\">");		out.println("    <response result");		out.println("       code=\"" + resultCode + "\"");		out.println("       desc=\"" + resultCodeDesc(resultCode) + "\">");		out.println("    </response-result>");		out.println("  </push-response>");		out.println("</pap>");	}	/**	 * Returns description of a PAP result response code	 * 	 * @param code	 *            an <code>int</code> value	 * @return a <code>String</code> value	 */	private static String resultCodeDesc(int code) {		switch (code) {		case 1001:			return "Accepted for Processing";		case 2000:			return "Bad Request";		case 2002:			return "Address Error";		}		return "Unknown result code";	}	/**	 * <code>unitPushRequest</code> generates a connectionless mode Push request	 * 	 * @param clientAddress	 *            a <code>String</code> value	 * @param messageContent	 *            a <code>String</code> value	 * @param contentType	 *            a <code>String</code> value	 * @exception Exception	 *                if an error occurs	 */	private void unitPushRequest(String clientAddress, String messageContent,			String contentType) throws Exception {		ByteArrayOutputStream content = new ByteArrayOutputStream();		contentType = encodeContent(messageContent, content, contentType);		int wspContentType = encodeContentType(contentType);		transactionId %= 127;		byte[] wspPdu = wspPduPUSH(transactionId++, wspContentType, content				.toByteArray());		sendData(clientAddress, connectionlessPushPort, wspPdu, wspPdu.length);	}	/**	 * A simplified "WBXML encoder". It handles only SI content type, and only	 * href attribute within SI content (others ignored). No well-formedness nor	 * validity checks are performed during the encoding.	 * 	 * @param messageContent	 *            a <code>String</code> value	 * @param content	 *            a <code>ByteArrayOutputStream</code> value	 * @param contentType	 *            a <code>String</code> value	 * @return a <code>String</code> value	 */	private static String encodeContent(String messageContent,			ByteArrayOutputStream content, String contentType) throws Exception {		if (contentType.startsWith("text/vnd.wap.si")) {			int i = messageContent.indexOf("href=\"http://");			if (i > 0) {				try {					final byte[] bytes1 = { 0x0, 0x5, 0x4, 0x0, 0x45,							(byte) 0xc6, 0xc, 0x3 };					final byte[] bytes2 = { 0x0, 0x7, 0x1, 0x3 };					final byte[] bytes3 = { 0x0, 0x1, 0x1 };					String href = messageContent.substring(i + 13,							messageContent.indexOf("\"", i + 14));					String message = messageContent.substring(messageContent							.indexOf(">", i + 15) + 1, messageContent.indexOf(							"</indication>", i + 16));					content.write(bytes1);					content.write(href.getBytes());					content.write(bytes2);					content.write(message.trim().getBytes());					content.write(bytes3);					return "application/vnd.wap.sic";				} catch (Exception e) {					content.reset();				}			}		}		content.write(messageContent.getBytes());		return contentType;	}	/**	 * <code>encodeContentType</code> encodes mime type (cf. WSP specification	 * WAP-203-WSP 4-May-2000)	 * 	 * @param contentType	 *            a <code>String</code> value	 * @return an <code>int</code> value	 */	private static int encodeContentType(String contentType) throws Exception {		contentType = contentType.toLowerCase();		if (contentType.startsWith("text/vnd.wap.wml"))			return 0x88;		else if (contentType.startsWith("text/vnd.wap.si"))			return 0xAD;		else if (contentType.startsWith("text/vnd.wap.sl"))			return 0xAF;		else if (contentType.startsWith("application/vnd.wap.wmlc"))			return 0x94;		else if (contentType.startsWith("application/vnd.wap.sic"))			return 0xAE;		else if (contentType.startsWith("applicavtion/vnd.wap.slc"))			return 0xB0;		throw new Exception("unsupported content type:" + contentType);	}	// WSP PDU Type Assigments	// Table 34 (page 94) in WSP specification WAP-203-WSP 4-May-2000	private static final int WSP_PUSH = 0x06;	/**	 * Generate WSP PUSH PDU (note: only partial functionality provided)	 * 	 * @param tid	 *            an <code>int</code> value	 * @param contentType	 *            an <code>int</code> value	 * @param content	 *            a <code>byte[]</code> value	 * @return a <code>byte[]</code> value	 * @exception Exception	 *                if an error occurs	 */	private static byte[] wspPduPUSH(int tid, int contentType, byte[] content)			throws Exception {		ByteArrayOutputStream data = new ByteArrayOutputStream();		data.write(tid);		data.write(WSP_PUSH);		data.write(1); // contenttype size + headers size		data.write(contentType);		data.write(content);		return data.toByteArray();	}	/**	 * <code>sendData</code> sends data to given address and port using UDP	 * datagram socket	 * 	 * @param addressStr	 *            a <code>String</code> value	 * @param port	 *            an <code>int</code> value	 * @param data	 *            a <code>byte[]</code> value	 * @param dataSize	 *            an <code>int</code> value	 * @return an <code>int</code> value	 * @exception Exception	 *                if an error occurs	 */	private static int sendData(String addressStr, int port, final byte[] data,			int dataSize) throws Exception {		if (dataSize <= 0)			return 0;		InetAddress addr = InetAddress.getByName(addressStr);		System.out.println("sendData addr = " + addr.getHostAddress()				+ "; port = " + port + "; data_size = " + dataSize);		DatagramSocket s = new DatagramSocket();		// s.setSoTimeout(1000);		DatagramPacket packet = new DatagramPacket(data, dataSize, addr, port);		s.send(packet);		int nBytes = packet.getLength();		if (dataSize != nBytes)			System.err					.println("warning: not all bytes of a datagram are sent to socket!?");		s.close();		return nBytes;	}}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩丝袜情趣美女图片| 欧美在线啊v一区| 一本色道久久综合亚洲aⅴ蜜桃 | 亚洲成人1区2区| 国产在线不卡一区| 欧美日韩一区三区四区| 国产精品天天看| 精品中文字幕一区二区小辣椒| 91成人免费网站| 中文字幕一区二区三区色视频| 精品一区二区综合| 欧美肥胖老妇做爰| 亚洲国产精品久久不卡毛片| 99热精品一区二区| 国产精品免费av| 国产麻豆精品视频| 精品国产一区a| 日韩二区三区在线观看| 欧美剧情电影在线观看完整版免费励志电影 | 一区二区三区在线观看国产| 99精品热视频| 久久久777精品电影网影网 | 亚洲图片欧美色图| 91福利在线导航| 一区二区三区日本| 色综合久久中文字幕综合网| 欧美国产1区2区| 成人国产电影网| 国产精品家庭影院| 91丝袜呻吟高潮美腿白嫩在线观看| 国产亚洲精久久久久久| 国产精品影视在线| 国产人久久人人人人爽| 国产精品99久久久久久久vr| 精品sm捆绑视频| 国产一区二区三区黄视频| 国产亚洲va综合人人澡精品| 国产精品一区不卡| 国产精品女同一区二区三区| 成人蜜臀av电影| 亚洲欧洲精品一区二区三区不卡| 成人国产精品免费观看| 一区二区国产视频| 欧美挠脚心视频网站| 免费在线观看精品| 国产亚洲一区二区三区| caoporm超碰国产精品| 亚洲欧美偷拍卡通变态| 欧日韩精品视频| 免费在线视频一区| 国产欧美日韩在线| 色久综合一二码| 天天做天天摸天天爽国产一区| 日韩一级在线观看| 国产成人亚洲精品青草天美| ㊣最新国产の精品bt伙计久久| 91久久久免费一区二区| 午夜国产精品一区| 国产视频一区二区在线观看| 色狠狠色噜噜噜综合网| 精油按摩中文字幕久久| 最新日韩在线视频| 日韩你懂的在线观看| 成人一区二区视频| 亚洲国产成人porn| 国产欧美视频一区二区| 欧美性大战xxxxx久久久| 蜜臀av在线播放一区二区三区| 国产欧美一区二区三区网站| 欧洲激情一区二区| 国产伦精一区二区三区| 亚洲午夜精品17c| 精品久久久久久无| 欧美亚洲一区三区| 国产大陆精品国产| 五月婷婷激情综合网| 中文字幕免费不卡| 日韩精品自拍偷拍| 欧美曰成人黄网| 国产福利一区在线| 日本少妇一区二区| 亚洲午夜久久久久久久久电影院 | 欧美激情艳妇裸体舞| 91麻豆精品国产91| 91麻豆swag| 国产成人av一区二区三区在线观看| 日韩精品一级中文字幕精品视频免费观看| 久久精品免费在线观看| 欧美大片在线观看一区二区| 在线亚洲精品福利网址导航| 成人蜜臀av电影| 欧美欧美欧美欧美| 91影视在线播放| 春色校园综合激情亚洲| 国产一区二区三区四| 日韩国产高清在线| 亚洲成人av福利| 亚洲一区精品在线| 一区二区三区四区蜜桃| 亚洲欧洲美洲综合色网| 中文字幕久久午夜不卡| 久久久99精品免费观看| 精品91自产拍在线观看一区| 欧美一区二区成人| 欧美日韩国产片| 欧美久久久久免费| 欧美剧在线免费观看网站 | 成人丝袜18视频在线观看| 精品一区二区三区不卡| 捆绑紧缚一区二区三区视频| 日韩精品电影在线| 青青草国产精品亚洲专区无| 午夜电影一区二区| 日本亚洲电影天堂| 久久av中文字幕片| 国产精品亚洲人在线观看| 国产成人精品在线看| 成人成人成人在线视频| 91免费小视频| 色婷婷av一区二区三区大白胸| 91网上在线视频| 欧美性高清videossexo| 欧美日韩国产首页| 日韩一级视频免费观看在线| 亚洲三级在线免费| 国产精品国产精品国产专区不蜜| 1024亚洲合集| 亚洲主播在线观看| 日韩av网站免费在线| 国产一区二区不卡在线| 国产成人午夜精品影院观看视频 | 麻豆精品在线播放| 国产麻豆日韩欧美久久| 91丝袜高跟美女视频| 日本韩国精品在线| 欧美夫妻性生活| 久久综合久久鬼色中文字| 欧美精彩视频一区二区三区| 国产精品你懂的在线欣赏| 中文字幕一区在线| 丝袜美腿亚洲色图| 国产精品2024| 一本久道中文字幕精品亚洲嫩| 欧美人妇做爰xxxⅹ性高电影| 精品免费日韩av| 国产精品久久久久影院| 亚洲成人动漫av| 国产精品中文字幕欧美| 日本高清不卡在线观看| 日韩欧美国产三级电影视频| 国产人妖乱国产精品人妖| 亚洲国产aⅴ成人精品无吗| 国产精品1024| 欧美人伦禁忌dvd放荡欲情| 欧美激情一区三区| 亚洲福利一区二区| 精品一区二区三区日韩| 在线视频一区二区三区| 久久色在线视频| 亚洲小少妇裸体bbw| 国产成人精品免费在线| 欧美亚一区二区| 中文字幕乱码亚洲精品一区| 首页国产丝袜综合| 成年人国产精品| 亚洲精品一区在线观看| 亚洲一区二三区| 成人开心网精品视频| 精品久久国产老人久久综合| 亚洲蜜臀av乱码久久精品蜜桃| 老司机免费视频一区二区| 欧美色大人视频| 成人欧美一区二区三区黑人麻豆 | 色诱视频网站一区| 久久这里只有精品6| 日韩不卡一区二区| 91啦中文在线观看| 国产视频一区在线播放| 精品一区二区三区免费视频| 欧美日韩不卡一区二区| 亚洲美女视频一区| 国产xxx精品视频大全| 日韩精品一区二区三区在线观看| 亚洲综合色婷婷| 91亚洲永久精品| 国产精品国产三级国产aⅴ中文| 国产自产视频一区二区三区| 欧美一区二区日韩| 五月天一区二区三区| 色婷婷av一区二区三区软件 | 精品少妇一区二区三区免费观看| 亚洲一区二区三区四区中文字幕| av男人天堂一区| 国产欧美视频一区二区三区| 国产精品亚洲成人| 国产欧美在线观看一区| 国产69精品久久99不卡| 久久久亚洲精品石原莉奈| 狠狠色丁香婷婷综合| 亚洲精品在线免费播放|