android服务端_android tcp服务端 - CSDN
精华内容
参与话题
  • Android 项目服务端

    2019-06-14 13:27:26
    2019独角兽企业重金招聘Python工程师标准>>> ...

    这是之前发布的Android项目的服务端源码,只是简单的根据请求返回了一些测试数据,没有实现对数据库的操作,可以根据需求自己实现。

    这是mvc4 WebAPI项目,需要用vs2012打开。

    如果是用的android模拟器开发,请把项目属性和android项目改为:

    如果是用电脑链接android设备开发,请把项目属性和android项目改为:

    并在配置applicationhost.config之后以管理员身份在cmd下添加下面的命令

    netsh http add urlacl url=http://192.168.0.103:5511/ user=everyone

     

    项目源码地址:https://github.com/liukemng/mydemoserver

    转载于:https://my.oschina.net/secyaher/blog/274466

    展开全文
  • 所以在学习了这部分内容后,就将其以最常见的登录过程为例整理出来,也方便跟我一样的新手能迅速学习上手。...博客分一二两篇,第一篇是服务器端,第二篇是Android客户端 而服务器端分为User model、Use

    概要

    安卓APP要实现很多功能(比如登录注册、发表评论等)时都必须要使用到网络数据交互。所以在学习了这部分内容后,就将其以最常见的登录过程为例整理出来,也方便跟我一样的新手能迅速学习上手。

    预期效果图如下,输入手机号和密码,点击Login按钮,上传数据到服务器端进行验证,再对结果进行反馈。
    这里写图片描述

    博客分一二两篇,第一篇是服务器端,第二篇是Android客户端
    而服务器端分为User model、UserDAO、LoginServlet三个部分,只写了用户登录验证流程中最简单的实现逻辑,仅供参考。

    User model

    用户model最主要的属性,就是账户(现在多为手机号)和账户密码,同时定义了Key,用于在URL中传参和取参。

    public class User implements Serializable{
        private int id;
        private String phoneNumber;
        private String password;
        private String userName;
        private String emailAddress;
        private Date registerTime;
        //用于URL传参和取参时的key
        public static String PHONENUMBER = "phoneNumber";
        public static String PASSWORD = "passWord";
        public static String USERNAME = "userName";
        //构造函数
        public User(String phoneNumber,String password,String userName){
            this.phoneNumber = phoneNumber;
            this.password = password;
            this.userName = userName;
            registerTime = new Date();
        }
        //属性的get与set方法不再贴出
    }

    UserDAO

    这里没有去涉及数据库的复杂操作和查询比对,就用了一个简单的ArrayList数组作为数据源,通过isLoginCheck方法对数组进行遍历取值,从而对登录验证是否成功进行判断。

    public class UserDAO {
        public static void main(String[] args) {
            //本地验证Main函数
            UserDAO userDAO = new UserDAO();
            System.out.println(userDAO.isLoginOK("123456", "abc123456"));
        }
        //假设的数据源
        public ArrayList<User> users;
    
        public UserDAO() {
            // TODO Auto-generated constructor stub
            users = new ArrayList<User>();
            users.add(new User("123456","abc123456","codingma"));
            users.add(new User("654321","abcdf123","codemayq"));
        }
        //验证函数
        public boolean isLoginOK(String phoneNumber,String password) {
            for (User user : users) {
                if (user.getPhoneNumber().equals(phoneNumber)) {
                    if (user.getPassword().equals(password)) {
                        return true;
                    }
                }
            }
            return false;
        }
    }

    LoginServlet

    LoginServlet只是一个普通的Servlet,在doPost方法中,对URL中的参数进行了提取,然后调用UserDAO中的isLoginOK方法进行验证,返回OK或者Wrong的结果值

    public class LoginServlet extends HttpServlet {
    
        public LoginServlet() {
            super();
        }
    
        public void doGet(HttpServletRequest request, HttpServletResponse response)
                throws ServletException, IOException {
    
            response.setContentType("text/html");
            PrintWriter out = response.getWriter();
            out.println("GET");
            out.flush();
            out.close();
        }
    
        public void doPost(HttpServletRequest request, HttpServletResponse response)
                throws ServletException, IOException {
    
            response.setContentType("text/html");
            PrintWriter out = response.getWriter();
            //取出URL中的账号密码参数
            String phoneNumber = request.getParameter(User.PHONENUMBER);
            String passWord = request.getParameter(User.PASSWORD);
            UserDAO userDAO = new UserDAO();
            //验证过程
            if (userDAO.isLoginOK(phoneNumber, passWord)) {
                out.println("OK");
            }else {
                out.println("Wrong");
            }
    
            out.flush();
            out.close();
        }
    
    }

    总结

    服务器端的部分就分为三部分,User类,用于数据验证的UserDAO类,用于接收处理请求并返回结果的LoginServlet,调用关系比较清晰,不算特别复杂。

    Android客户端的代码请见下一章
    转载请注明出处http://blog.csdn.net/u012145166/article/details/51335187

    展开全文
  • Android服务器端开发

    千次阅读 2016-09-16 16:00:14
    Android服务器端开发 html/css:制作静态页面 servlet:动态页面 看界面与服务器之间有没有数据的交互 Web开发里面的模式 C/S:客服端/服务器端 优点:安全性高,客户端是可以分担服务器端的一些功能模块 ...

    Android服务器端开发

    1. html/css:制作静态页面
    2. servlet:动态页面
      看界面与服务器之间有没有数据的交互
    Web开发里面的模式

    C/S:客服端/服务器端
    优点:安全性高,客户端是可以分担服务器端的一些功能模块
    缺点:必须安装客服端,开发成本大,维护比较困难,不能无缝升级
    B/S:浏览器/服务器端
    优点:只要开发服务器端就可以了,可以实现无缝升级
    缺点:安全性低,所有的功能都是由服务器端去完成的(高强度的负载);
    O2O 线上和线下(去除了中介)
    P2P (点到点)

    互联网:虚拟的网络环境,将世界上所有的能上网的东西放在一个网络环境中,互相发送邮件,资源的共享。

    万维网:一种网络协议 www.baidu.com World Wide Web
    应用层:http https
    传输层:TCP/IP

    J2SE(核心基础JAVA) J2EE(企业级开发)

    CGI:公共网关接口 CGI每次都会启动一个进程来处理客户端发来的请求,效率比较低。CGI遵循HTTP协议,多语言开发:C,JAVA
    Servlet:API在J2EE。由SUN公司运营管理 Servlet每次都会启动一个轻量级的线程来处理客户端发来的请求,效率比较高
    简单概念:Servlet就是运行在服务器端的JAVA代码。有自己的一套API
    专业概念:Servlet他是一个组件(用很少的代码去完成一个功能模块)(server applet)

    服务器:就是一台主机,安装一些软件
    Tomcat:服务器端的容器

    • bin:可执行的文件
    • webapps:所有部署到服务器上的代码全都在这个文件夹里面

    三种方式写服务器端文件。

    1.实现Servlet接口,从写里面的回调方法
    2.外部想要访问Servlet,Servlet就必须注册并且向外界提供访问路径(Tomcat7.0之前的必须在WebContent目录下web.xml文件中配置,之后的可以直接利用注解@WebServlet("/hello"))

    1. 实现implements Servlet这个接口。必须重写里面的方法

       // 收到请求的时候回调
       @Override
       public void service(ServletRequest arg0, ServletResponse response)
           throws ServletException, IOException {
       // TODO Auto-generated method stub
       // Servlet线程不安全,如果你要让N个线程同时去操控一个共有的属性
       // SerVlet里面就不去写成员变量,都携程局部变量(每个线程有自己的变量名)
       // int i
       // i++;
       // 设置编码
       response.setCharacterEncoding("GBK");
       PrintWriter writer = arg1.getWriter();
       writer.write("这是我的第一个Serlvet");
       writer.flush();
       writer.close();
       System.out.println("service")
       }
    2. 在JAVAResource下面新建一个类继承extends GenericServlet在重写Service方法

        // TODO Auto-generated method stub
        response.setContentType("text/xml");
        response.setCharacterEncoding("GBk");
        PrintWriter writer = arg1.getWriter();
        writer.write("<student><name>张三</name></student>");
        writer.flush();
        writer.close();
    1. 第三种是官方建议的直接新建Servlet类似于直接新建一个Activity一样。它是继承于HttpServlet,我们只需在doGet或是doPost()方法中有一个调用对方就可以了。

       protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
       // TODO Auto-generated method stub
       response.setCharacterEncoding("GBK");
       response.setContentType("text/html");
       PrintWriter writer = response.getWriter();
       writer.write("<html><img src='aa.png'></html>");
       writer.flush();
       writer.close();
        }

      这三种方式最基层就是实现Servlet接口,其次是继承GenericService。最后才是HttpServlet



    文/清枫_小天(简书作者)
    原文链接:http://www.jianshu.com/p/67ef863dc2af
    著作权归作者所有,转载请联系作者获得授权,并标注“简书作者”。
    展开全文
  • Android怎么从服务器端获取数据

    千次阅读 2019-05-27 11:09:29
    android中有时候我们不需要用到本机的SQLite数据库提供数据,更多的时候是从网络上获取数据,那么Android怎么从服务器端获取数据呢?有很多种,归纳起来有 一:基于Http协议获取数据方法。二:基于SAOP协议获取...

    在android中有时候我们不需要用到本机的SQLite数据库提供数据,更多的时候是从网络上获取数据,那么Android怎么从服务器端获取数据呢?有很多种,归纳起来有

    一:基于Http协议获取数据方法。二:基于SAOP协议获取数据方法,三:忘了-------

    那么我们的这篇文章主要是将关于使用Http协议获取服务器端数据,这里我们采取的服务器端技术为java,框架为Struts2,或者可以有Servlet,又或者可直接从JSP页面中获取数据。

    那么,接下来我们便开始这一路程:

    首先:编写服务器端方法,我这里采用的MVC框架是Struts2,目的很单纯,就是为了以后做个完整的商业项目,技术配备为:android+SSH。当然,篇幅有限,我这里就直接用Strtus2而已。

    服务器端:新建WebProject ,选择Java ee 5.0.

    为了给项目添加Struts2的支持,我们必须导入Struts2的一些类库,如下即可(有些jar包是不必的,但是我们后来扩展可能是要使用到的,就先弄进去):

    1: xwork-core-2.2.1.1.jar

    2: struts2-core-2.2.1.1.jar

    3: commons-logging-1.0.4.jar

    4: freemarker-2.3.16.jar

    5: ognl-3.0.jar

    6: javassist-3.7.ga.jar

    7:commons-ileupload.jar 

    8:commons-io.jar

    9:json-lib-2.1-jdk15.jar  处理JSON格式数据要使用到

    10:struts2-json-plugin-2.2.1.1.jar    基于struts2的json插件

    以上的jar包,需要放在WebRoot/WEB-INF/lib目录下

    然后在web.xml文件中敲下:

    <?xml version="1.0" encoding="UTF-8"?>
    <web-app version="2.5" 
        xmlns="http://java.sun.com/xml/ns/javaee" 
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
        xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
        http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
    
    &lt;!-- 定义Struts2的核心控制器:FilterDispatcher --&gt;
    &lt;filter&gt;
       &lt;!-- 定义核心Filter的名称 --&gt;
       &lt;filter-name&gt;struts2&lt;/filter-name&gt;
       &lt;!-- 定义Filter的实现类 --&gt;
       &lt;filter-class&gt;org.apache.struts2.dispatcher.FilterDispatcher&lt;/filter-class&gt;
    &lt;/filter&gt;
    
    &lt;filter-mapping&gt;
       &lt;filter-name&gt;struts2&lt;/filter-name&gt;
       &lt;url-pattern&gt;/*&lt;/url-pattern&gt;
    &lt;/filter-mapping&gt;
    

    <welcome-file-list>
    <welcome-file>index.jsp</welcome-file>
    </welcome-file-list>

    </web-app>


    然后编写struts.xml文件,并放在WebRoot/WEB-INF/lib目录下:如下代码:
    <?xml version=“1.0” encoding=“UTF-8”?>
    <!DOCTYPE struts PUBLIC
    “-//Apache Software Foundation//DTD Struts Configuration 2.0//EN”
    http://struts.apache.org/dtds/struts-2.0.dtd”>
    <struts>

    &lt;!-- setting encoding,DynamicMethod,language 
     &lt;constant name="struts.custom.i18n.resources" value="messageResource"&gt;&lt;/constant&gt;
    --&gt;
    &lt;constant name="struts.i18n.encoding" value="UTF-8"&gt;&lt;/constant&gt;
    &lt;constant name="struts.enable.DynamicMethodInvocation" value="true"&gt;&lt;/constant&gt;
    
    
    &lt;!-- add package here extends="struts-default"--&gt;
     &lt;package name="dongzi" extends="json-default"&gt; &lt;!--需要将struts-default改为json-default--&gt;
      &lt;!-- setting action --&gt;
         &lt;action name="login" class="com.dongzi.action.loginAction" method="login"&gt;
              &lt;result type="json"&gt;&lt;/result&gt;  &lt;!--返回值类型设置为json,不设置返回页面--&gt;        
        &lt;/action&gt; 
     &lt;/package&gt; 
    

    </struts>

    配置好后,我们再根据<action>标签内容来编写action。方法为method对应的login,类名为loginAction,

    注意:包继承为:json-default ,输出结果类型为json

    如下:
    public class loginAction extends ActionSupport implements 
                             ServletRequestAware,ServletResponseAware {
        /**
         * 
         */
        private static final long serialVersionUID = 1L;
    
    HttpServletRequest request;
    HttpServletResponse response;
    
    public void setServletRequest(HttpServletRequest request) {
     this.request=request;
    }
    
    public void setServletResponse(HttpServletResponse response) {
        this.response=response;
    }
    
    public void  login(){  
        try {
             //HttpServletRequest request =ServletActionContext.getRequest();
             // HttpServletResponse response=ServletActionContext.getResponse();
             this.response.setContentType("text/html;charset=utf-8");
             this.response.setCharacterEncoding("UTF-8");
                 if(this.request.getParameter("username").equals("123456")){
                      this.response.getWriter().write("真的很奇怪,日本人!");
                 }else if(this.request.getParameter("username").equals("zhd")){
                     this.response.getWriter().write("没有错,我就是东子哥!");
                 }else{
                     this.response.getWriter().write("我就是东子哥!");
                 }
    
            //将要返回的实体对象进行json处理      
              //  JSONObject json=JSONObject.fromObject(this.getUsername());     
             //输出格式如:{"id":1, "username":"zhangsan", "pwd":"123"}      
             //   System.out.println(json);       
    
              //   this.response.getWriter().write(json.toString());
            /**
               JSONObject json=new JSONObject(); 
               json.put("login", "login");
                response.setContentType("text/html;charset=utf-8");
               System.out.println(json);
               byte[] jsonBytes = json.toString().getBytes("utf-8");
               response.setContentLength(jsonBytes.length);
               response.getOutputStream().write(jsonBytes);
               **/
            /**
              JSONObject json=new JSONObject(); 
               json.put("login", "login");
               byte[] jsonBytes = json.toString().getBytes("utf-8");
               response.setContentType("text/html;charset=utf-8");
               response.setContentLength(jsonBytes.length);
               response.getOutputStream().write(jsonBytes);
               response.getOutputStream().flush();
               response.getOutputStream().close();    
             **/  
    
        } catch (Exception e) { 
            e.printStackTrace();
        }
        // return null;
    }
    

    }

    运行查看下:
    http://localhost:8080/PDAServer/login.action?username=123456  当然你可以输入其他参数的URL

    Android与服务器端数据交互(http协议整合struts2+android)

    运行成功。

    客户端:

    这里需要注意的是模拟器把自己当成了localhost,以及127.0.0.1了,因此如果基于本地的web项目测试的话,必须修改IP为:10.0.2.2

    public class MainActivity extends Activity {
    /** Called when the activity is first created. */
    //模拟器自己把自己当成localhost了,服务器应该为10.0.2.2
    private static String url="http://10.0.2.2:8080/PDAServer/login.action";
    @Override
    public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    getPDAServerData(url);
    }
    

    /**

    • 请求服务
    • @param url
      */
      private void getPDAServerData(String url){
      url+="?username=123456";
      HttpClient client=new DefaultHttpClient();
      HttpPost request;
      try {
      request = new HttpPost(new URI(url));
      HttpResponse response=client.execute(request);
      //判断请求是否成功
      if(response.getStatusLine().getStatusCode()==200){
      HttpEntity entity=response.getEntity();
      if(entity!=null){
      String out=EntityUtils.toString(entity);
      new AlertDialog.Builder(this).setMessage(out).create().show();
      }
      }

    }catch (URISyntaxException e) {
    e.printStackTrace();
    }
    catch (ClientProtocolException e) {
    e.printStackTrace();
    } catch (IOException e) {
    e.printStackTrace();
    }
    }
    }

     运行结果如下:

    Android与服务器端数据交互(http协议整合struts2+android)

    成功了吧:当然读者可以根据这个思路扩展下应用,比如:struts2+hibernate+spring+json。数据方面可以用json,也可以使用xml。android已经提供了JSON的API,struts2中也可以使用JSON插件.自己扩展吧。

    转自:http://www.cnblogs.com/zhangdongzi/archive/2011/04/18/2020179.html

     本文由用户 fmms 自行上传分享,仅供网友学习交流。所有权归原作者,若您的权利被侵害,请联系管理员。
     转载本站原创文章,请注明出处,并保留原始链接、图片水印。
     本站是一个以用户分享为主的开源技术平台,欢迎各类分享!
                </div>
                <div class="col-md-3">
                    <div class="ui-box border ut-pd10">
                        <div class="title clearfix"><h3>相关经验</h3></div>
                        <ul class="ui-list">
    
  • Android与服务器端数据交互(http协议整合struts2+android)
  • Android客户端与服务器HTTP交互,数据以json格式传输
  • android与server端servlet交互
  • solr服务器配置与tomcat整合
  • Android通过HTTP协议实现上传文件数据
  •                 <div class="sticky-top hidden-xs ut-mt20 hidden-sm " id="article-navbar" role="complementary"><div class="title"><h3>目录</h3></div><div class="nav-wrap"><div class="highlight-title"></div><ul class="nav article-sidenav"></ul></div></div>
                </div>
            </div>
        </div>
      </article>
    
    展开全文
  • 本文总结了Android客户端与服务器进行交互时,采用RESTful API +Json的交互方式,针对不同的数据形式以及不同的解析方法,如有不足之处,欢迎指正。
  • Web服务端和客户端的交互,Okhttp请求的方式,包括get 和 post ,请求图片,服务器的搭建。
  • 搭建服务器首先要创建一个web项目,因为我的开发工具JAVA EE-Eclipse,既可以搭建安卓项目,又可以搭建web项目,所以就直接使用了。如果没有Tomcat的话,可以在eclipse里面设置一下。... 当设置完tomcat以后,就...
  • Android后端服务器的搭建

    万次阅读 2018-06-23 01:11:13
    Android后端服务器的搭建 一直做Android前端,今天突然心血来潮想搭建一个后台玩玩。平时都是需要什么样的接口直接出个接口文档扔给后台的兄弟,自己从来不操心他们内部的实现问题。今天怀着好奇的心理去搭建了一个...
  • Android中服务器和客户端交互,可上传文件、图片、json数据,也可从服务器端下载图片、文件
  • 利用线程是多个Socket客户端连接到ServerSocket服务端,但是怎么让ServerSocket服务端向所有的客户端发送同一个数据?
  • 客户端通过post和get获取服务端上的json数据 有些猿友一直苦于需找客户端和服务端网络请求的demo,本猿在此全部总结并发布一套简单的从服务端生成json数据,并在android客户端获取json数据的过程,方便大家熟悉从...
  • Android客户端与服务器端数据同步

    万次阅读 多人点赞 2016-04-04 16:26:02
    那么这篇文章中我们要解决的问题是如何在客户端与服务端只传输经过增删改操作的数据,来使得客户端与服务端的数据是同步的。 名词解释 Anchor:同步锚点,用时间戳来表示,用来发现两端数据变化的部分 客户端表...
  • Android中AIDL使用例子

    万次阅读 热门讨论 2011-05-05 23:30:00
    本文提供了一个关于AIDL使用的简单易懂的例子,分为客户端和服务端两部分,分别为客户端和服务端新建一个eclipse工程,实现了从客户端向服务端发送请求,服务端打印log的功能。客户端和服务端的源码结构如下:注意,...
  • 如题,原因是因为,加密标准的原因。... 在ANdroid中应该使用这个标准 Cipher cipher = Cipher.getInstance("RSA/ECB/PKCS1Padding"); 在服务端使用这个标准 Cipher cipher = Cipher.getInstance("RSA");
  • 最近在学做一个手机客户端,服务端用java mina搭建,客户端也是利用mina 和服务端保持长连接通信。 自己的思路:1打开应用即和服务端建立连接,将session保存 2在不同的activity中用保存的session去请求相关数据 ...
  • 有时候当上传的数据参数很多的时候,会用model打包上传,但是如果服务端的解析方式不当,无论你怎么上传,服务端解析到的数据包里面数据都是null服务端请用ResponseBody 客户端:@POST("FenceSetting/add") ...
  • 1. Android - Binder机制 - ServiceManager 2. Android - Binder机制 - 普通service注册 3. Android - Binder机制 - 获得普通service 4. Android - Binder机制 - client和普通service交互 5. Android
  • Android音频实时传输与播放---服务端

    千次下载 热门讨论 2020-07-30 23:30:42
    Android音频实时传输与播放 的服务端,接受流与转发流
  • Android客户端与服务器端数据库同步

    千次阅读 2016-08-04 18:26:08
    那么这篇文章中我们要解决的问题是如何在客户端与服务端只传输经过增删改操作的数据,来使得客户端与服务端的数据是同步的。 名词解释 Anchor:同步锚点,用时间戳来表示,用来发现两端数据变化的部分 ...
  • android微信支付的服务端该怎么写,官网demo看半天都看不明白,有没有手把手教程,要服务端
1 2 3 4 5 ... 20
收藏数 78,036
精华内容 31,214
关键字:

android服务端