android实现 服务器功能

  1 package com.weijia.tests;
  2
  3 import java.io.IOException;
  4 import java.net.InetSocketAddress;
  5 import java.net.ServerSocket;
  6 import java.net.Socket;
  7 import java.util.concurrent.Executor;
  8
  9 import org.apache.http.HttpException;
 10 import org.apache.http.HttpRequest;
 11 import org.apache.http.HttpResponse;
 12 import org.apache.http.HttpResponseInterceptor;
 13 import org.apache.http.impl.DefaultConnectionReuseStrategy;
 14 import org.apache.http.impl.DefaultHttpResponseFactory;
 15 import org.apache.http.impl.DefaultHttpServerConnection;
 16 import org.apache.http.params.BasicHttpParams;
 17 import org.apache.http.params.CoreConnectionPNames;
 18 import org.apache.http.params.CoreProtocolPNames;
 19 import org.apache.http.params.HttpParams;
 20 import org.apache.http.protocol.HttpContext;
 21 import org.apache.http.protocol.HttpProcessor;
 22 import org.apache.http.protocol.HttpRequestHandler;
 23 import org.apache.http.protocol.HttpRequestHandlerRegistry;
 24 import org.apache.http.protocol.HttpService;
 25 import org.apache.http.protocol.ImmutableHttpProcessor;
 26 import org.apache.http.protocol.ResponseConnControl;
 27 import org.apache.http.protocol.ResponseContent;
 28 import org.apache.http.protocol.ResponseDate;
 29 import org.apache.http.protocol.ResponseServer;
 30
 31 import com.example.cairh_sjkh_it.R;
 32
 33 import android.app.Activity;
 34 import android.content.Intent;
 35 import android.os.Bundle;
 36 import android.widget.Toast;
 37
 38 import com.sun.net.httpserver.HttpHandler;
 39 import com.sun.net.httpserver.HttpServer;
 40
 41 public class MainActivity extends Activity {
 42     ServerSocket serverSocket;
 43     @Override
 44     protected void onCreate(Bundle savedInstanceState) {
 45         super.onCreate(savedInstanceState);
 46         setContentView(R.layout.res);
 47 //        startService(new Intent(this, SocketService.class));
 48         try {
 49             serverSocket=new ServerSocket(8080);
 50         } catch (IOException e) {
 51             // TODO Auto-generated catch block
 52             e.printStackTrace();
 53         }
 54         HttpParams params = new BasicHttpParams();
 55          params
 56                  .setIntParameter(CoreConnectionPNames.SO_TIMEOUT, 5000)
 57                  .setIntParameter(CoreConnectionPNames.SOCKET_BUFFER_SIZE,8 * 1024)
 58                  .setBooleanParameter(CoreConnectionPNames.STALE_CONNECTION_CHECK, false)
 59                  .setBooleanParameter(CoreConnectionPNames.TCP_NODELAY, true)
 60                  .setParameter(CoreProtocolPNames.ORIGIN_SERVER,"HttpComponents/1.1");
 61
 62         HttpProcessor httpproc = new ImmutableHttpProcessor(
 63                 new HttpResponseInterceptor[] {
 64                         new ResponseDate(), new ResponseServer(),
 65                         new ResponseContent(), new ResponseConnControl() });
 66         HttpService httpService=new HttpService(httpproc,
 67                 new DefaultConnectionReuseStrategy(),
 68                 new DefaultHttpResponseFactory());
 69         httpService.setParams(params);
 70         // 创建HTTP请求执行器注册表
 71         HttpRequestHandlerRegistry reqistry = new HttpRequestHandlerRegistry();
 72         // 增加HTTP请求执行器
 73         reqistry.register("*" , new HttpRequestHandler() {
 74             @Override
 75             public void handle(HttpRequest httprequest, HttpResponse httpresponse,
 76                     HttpContext httpcontext) throws HttpException, IOException {
 77                 Toast.makeText(MainActivity.this, "good", Toast.LENGTH_LONG);
 78             }
 79         });
 80         // 设置HTTP请求执行器
 81         httpService.setHandlerResolver(reqistry);
 82         new Thread(runnable).start();
 83 //        Socket socket=new Socket();
 84 //        socket.bind(new InetSocketAddress(port))
 85     }
 86     Runnable runnable=new Runnable() {
 87
 88         @Override
 89         public void run() {
 90             // TODO Auto-generated method stub
 91             /* 循环接收各客户端 */
 92             boolean isLoop = true;
 93             while (isLoop && !Thread.interrupted()) {
 94             // 接收客户端套接字
 95             try {
 96                 Socket socket = serverSocket.accept();
 97             } catch (IOException e) {
 98                 // TODO Auto-generated catch block
 99                 e.printStackTrace();
100             }
101             // 绑定至服务器端HTTP连接
102             //DefaultHttpServerConnection conn = new DefaultHttpServerConnection();
103             //conn.bind(socket, params);
104             // 派送至WorkerThread处理请求
105             //Thread t = new WorkerThread(httpService, conn);
106             //t.setDaemon(true); // 设为守护线程
107             //t.start();
108             }
109         }
110     };
111 }
时间: 2024-10-05 14:58:06

android实现 服务器功能的相关文章

erlang-百度云推送Android服务端功能实现-erlang

百度云推送官方地址http://developer.baidu.com/wiki/index.php?title=docs/cplat/push 简单的介绍下原理: 百度云推送支持IOS和Android的云推送.Android支持的还不错,但是IOS一般很难调通.百度云对于IOS的推送来说,他只是做了一个中间的代理,为用户提供接口,优点是使用百度云推送,Android和IOS可以统一管理:缺点是:调通不容易,用户的IOS证书需要上传验证,会直接暴露给第三方,并且IOS的apns支持用户自己构建p

[Android]Samba服务器在Ubuntu下的配置与Windows系统间的数据共享

安装Samba 安装sambasudo apt-get install samba[编辑]Kubuntu 安装系统设置的共享模块sudo apt-get install kdenetwork-filesharing[编辑]配置 1.windows 访问 ubuntu 第一步创建共享目录: 比如要创建/home/用户名/share首先创建这个文件夹 (这个用户名就是你的用户名,为了方便易懂我才这样写的,到时记得自己改啊) 代码:mkdir /home/用户名/share (新建share文件夹)c

Android Studio 常用功能介绍

Android Studio 的基本用法 界面介绍 讲解1 这个界面,显示了我们使用 Android Studio时经常接触到的功能面板. Project 面板.用于浏览项目文件. Project 面板会显示当前的所有的 module . android application module 会显示一个手机图标(下图中的 app ):android library module 会显示一个书架图标(下图中的 android-lib):java library module 会显示一个咖啡图标(下

Android与服务器通信的方法之一(json)效率不高安全性不好

http通信,以xml或者json为载体,相互通信数据. Android对于http的网络通信,提供了标准的java接口--httpURLConnection接口,以及apache的接口--httpclient接口.其中我自己用的比较多的而是httpclient这个接口,因为它的功能更为丰富很有效. 同时http通信也分为post方式和get的方式,两个相比较的话,post传送的数据量比较大,安全性也比较高.因此在做数据查询时,我会用get方式:而在做数据添加.修改或删除时,我就用Post方式

集成Android免费语音合成功能(在线、离线、离在线融合)

集成Android免费语音合成功能(在线.离线.离在线融合),有这一篇文章就够了(离线)集成Android免费语音合成功能(在线.离线.离在线融合),有这一篇文章就够了(离在线融合) 转眼间,大半年没写文章了,没什么理由,就是人变懒了.囧~ 看标题,其实大家都被骗了,有这一篇文章还不够,我其实是打算分3篇文章来写的,如果合在一章里面就太长了,不过现在这个标题党横行的网络世界,我也被污染了,哈.那么为什么要分3篇文章来讲呢?看标题也能猜到了,就是在线.离线.离在线融合这3种语音合成方式,我将分别使

Android '记住密码'功能

1.运行后界面图 2.主要代码: 2.1 activity_main.xml(2个TextView 2个EditText 1个CheckBox以及1个Button): 1 <TextView 2 android:id="@+id/tvAccount" 3 android:layout_width="wrap_content" 4 android:layout_height="wrap_content" 5 android:layout_al

Android微信自动回复功能

Android微信自动回复功能 本文原创,转载请经过本人准许. 写在前面: 最近接到老大的一个需求,要求在手机端拦截微信的通知(Notification),从而获得联系人和内容.之后将联系人和内容发送到我们的硬件产品上,展示出来之后,再将我们想回复内容传给微信,并且发送给相应联系人. 老大还提示我需要用AccessibilityService去实现它,当然在此之前我并不知道AccessibilityService是什么鬼,不过没关系, just do IT ! AccessibilityServ

Android微信分享功能实例+demo

Android微信分享功能实例 1 微信开放平台注册 2 获得appId,添加到程序中,并运行程序 3 使用应用签名apk生成签名,添加到微信开放平台应用签名,完成注册 4 测试分享功能. 有问题请留言  o(∩_∩)o 哈哈 代码如下: package com.wx; import android.app.Activity; import android.os.Bundle; import android.util.Log; import android.view.View; import a

Android 带清除功能的输入框控件ClearEditText,仿IOS的输入框

转载请注明出处http://blog.csdn.net/xiaanming/article/details/11066685 今天给大家带来一个很实用的小控件ClearEditText,就是在Android系统的输入框右边加入一个小图标,点击小图标可以清除输入框里面的内容,IOS上面直接设置某个属性就可以实现这一功能,但是Android原生EditText不具备此功能,所以要想实现这一功能我们需要重写EditText,接下来就带大家来实现这一小小的功能 我们知道,我们可以为我们的输入框在上下左右