精华内容
下载资源
问答
  • 服务器通过socket协议和app连接,app接收到经纬度显示在百度地图上,目前实现了定位和绘制路线
  • PC作服务器与手机APP进行网络通信(附源码TCP服务器小工具) 本人是用来做ESP8266手机网络通信的,这里这是用电脑PC端模拟服务端,如果要实现ESP8266只需将ESP8266作为服务器即可,目前本人暂时没时间去整理...
  • 移动App与服务器安全通信

    千次阅读 2015-11-17 14:04:57
    最近,项目给移动端提供API接口,移动app通过post请求调用服务器的api接口,为了确保服务器的数据安全和通讯安全,防止数据篡改等恶意攻击,本人通过查询资料和思考,总结出了一个方案,个人认为能解决基本的接口...

            最近,项目给移动端提供API接口,移动app通过post请求调用服务器的api接口,为了确保服务器的数据安全和通讯安全,防止数据篡改等恶意攻击,本人通过查询资料和思考,总结出了一个方案,个人认为能解决基本的接口调用安全问题,具体方案如下。

            首先,移动端通过访问公开接口与服务器通讯,使用用户名和密码(当然是MD5加密)作为参数向服务器申请TOKEN,服务器获取用户名和密码,服务器端判断该用户是否合法,如果合法,服务端为移动APP应用分配APPID (32位随机字串)以及TOKEN(32位随机字串)同时服务器保存APPID和TOKEN,当然根据应用的不同,服务器可以为该TOKEN(建立有效期如3600s)后台就要建立触发器或者自动作业销毁token。移动端收到APPID和TOKEN进行存储,同时返回给用户与服务器建立连接成功等提示信息。

            之后,移动端请求其他功能接口,接口参数中要增加APPID和TOKEN,其接口格式如下:method(APPID, Token,...其他参数),服务器首先验证token是否有效,进行数据服务,完成之后如果token为临时有效,应重新修改有效期时间起点为调用时刻。

           最后,APP一直没有访问服务端,如token永久有效,则没有后续操作,若token为临时有效,token过了有效期,验证无法通过则通知用户访问相应接口,重新获取验证token。

           该方案其实是两步验证,其实对于一般应用,在用户注册的时候,可以同时为用户生成永久验证Token,用户在使用APP进行调用服务端API的时候,将该Token配置到系统中,这样就可以防止恶意用户直接通过访问post请求对服务端的数据造成安全隐患。

         

     

    展开全文
  • 安卓APP客户端与服务器通信

    千次阅读 2016-08-29 08:22:54
    安卓4.0以后副线程无法直接访问UI组件,所以需创建一个Handler对象用于传递主线程副线程之间的数据下面是代码演示: 服务器: package socketTest; import java.io.DataInputStream; import java.io....

    安卓4.0以后副线程无法直接访问UI组件,所以需创建一个Handler对象用于传递主线程与副线程之间的数据下面是代码演示:

    服务器:

    package socketTest;


    import java.io.DataInputStream;
    import java.io.DataOutputStream;
    import java.io.IOException;
    import java.io.InputStreamReader;
    import java.io.OutputStream;
    import java.io.OutputStreamWriter;
    import java.net.ServerSocket;
    import java.net.Socket;
    import java.net.UnknownHostException;
    import java.util.Scanner;


    public class socketTest {
    public static void main(String[] args) throws UnknownHostException, IOException {
    ServerSocket myServerSocket=new ServerSocket(4368);
    System.out.println("正在连接服务器");

    //此线程用于服务器接收消息
    new Thread(){
    public void run()
    {
    ServerSocket myServerSocketRead=null;
    try {
    myServerSocketRead=new ServerSocket(4369);
    } catch (IOException e1) {
    // TODO Auto-generated catch block
    e1.printStackTrace();
    }
    System.out.println("正在连接传输服务器");

    while(true)
    {
    Socket mysocketRead=null;
    try {
    mysocketRead=myServerSocketRead.accept();
    System.out.println("传输服务器连接成功!");
    } catch (IOException e1) {
    // TODO Auto-generated catch block
    e1.printStackTrace();
    }
    DataInputStream myreader=null;
    try {
    myreader = new DataInputStream(mysocketRead.getInputStream());
    } catch (IOException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    }

    String b=null;
    try {
    b = myreader.readUTF();
    } catch (IOException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    }
    System.out.println(b);

    }
    }
    }.start();
    while(true)
    {

    Socket mySocket=myServerSocket.accept();
    System.out.println("连接成功!");


    DataOutputStream mywriter=new DataOutputStream(mySocket.getOutputStream());

    String a=new Scanner(System.in).nextLine();
    mywriter.writeUTF(a);




    }


    }
    }


    客户端主要代码:

    package com.example.user.sockettest;
    
    import android.os.Message;
    import android.support.v7.app.AppCompatActivity;
    import android.os.Bundle;
    import android.util.Log;
    import android.view.View;
    import android.widget.Button;
    import android.widget.EditText;
    import android.widget.TextView;
    
    import java.io.DataInputStream;
    import java.io.DataOutputStream;
    import java.io.IOException;
    import java.net.Socket;
    import android.os.Handler;
    import java.util.logging.LogRecord;
    
    public class MainActivity extends AppCompatActivity {
        private TextView textView;
        private Handler handler;
        private Button send;
        private EditText editText;
        private myThead mythead;
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            textView= (TextView) findViewById(R.id.text);//用于接收消息
            send= (Button) findViewById(R.id.send);//用于发送消息
            editText= (EditText) findViewById(R.id.edittext);//用于发送消息
    
            handler=new Handler()
            {
                @Override
                public void handleMessage(Message msg) {
                   if(msg.what==0x123)
                   {
                       Log.e("bbb",(String)msg.obj);
                       textView.setText((String)msg.obj);
                   }
                }
            };
    
          mythead=new myThead(handler);
            mythead.start();
            send.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
    
                    new MyWrite(editText.getText().toString()).start();
                    Log.e("即将进入传输线程","1");
                }
    
            });
    
    
        }
    }
    
    package com.example.user.sockettest;
    
    import android.os.Looper;
    import android.os.Message;
    import android.util.Log;
    import android.widget.Toast;
    
    import java.io.DataInputStream;
    import java.io.DataOutputStream;
    import java.io.IOException;
    import java.io.InputStreamReader;
    import java.io.OutputStreamWriter;
    import java.net.Socket;
    import android.os.Handler;
    
    /**
     * Created by user on 2016/8/24.
     */
    public class myThead extends Thread {
        private Handler handler;
        public Handler revhandler;
        private DataInputStream myreader=null;
        private DataOutputStream mywriter=null;
        private Socket socket=null;
    
        public myThead(Handler handler)
        {
            this.handler=handler;
        }
        @Override
        public void run() {
    
            while (true) {
    
    
                try {
                    socket = new Socket("172.20.0.158", 4368);
                } catch (IOException e) {
                    e.printStackTrace();
                }
    
    
                try {
                    myreader = new DataInputStream(socket.getInputStream());
                } catch (IOException e) {
                    e.printStackTrace();
                }
    
    
                Log.e("juge", "run: aaaaaa");
                String flag = null;
    
                try {
                    flag = myreader.readUTF();
                    Message message = new Message();
                    message.what = 0x123;
                    message.obj = flag;
                    handler.sendMessage(message);
                    Log.e("aaa", "run: " + flag);
                } catch (IOException e) {
                    e.printStackTrace();
                }
    
    
            }
        }
    }
    
    package com.example.user.sockettest;
    
    import android.util.Log;
    
    import java.io.DataOutputStream;
    import java.io.IOException;
    import java.net.Socket;
    
    /**
     * Created by user on 2016/8/28.
     */
    public class MyWrite extends Thread {
        private String write;
    
        public MyWrite(String write)
        {
            this.write=write;
        }
        @Override
        public void run() {
            Socket socket=null;
            Log.e("进入传输线程","111");
            try {
                socket = new Socket("172.20.0.158", 4369);
            } catch (IOException e) {
                e.printStackTrace();
            }
            Log.e("进入传输线程","222");
            DataOutputStream mywriter=null;
            try {
                mywriter = new DataOutputStream(socket.getOutputStream());
            } catch (IOException e) {
                e.printStackTrace();
            }
            Log.e("进入传输线程","3");
            try {
                mywriter.writeUTF(write);
                Log.e("书写成功!","");
            } catch (IOException e) {
                e.printStackTrace();
            }
            Log.e("进入传输线程","4");
    
        }
    }
    

    展开全文
  • Android手机app与服务器端进行通信(一)

    万次阅读 多人点赞 2015-07-09 11:45:19
    Android手机app与服务器端进行通信(一)正文 当前手机app与服务器通信,通常有两种方式,一种是长连接,利用Socket进行连接,另一种是短连接通过Http进行连接。相较而言,短连接不损耗系统资源,只有当客户端app...

    正文

    当前手机app与服务器端通信,通常有两种方式,一种是长连接利用Socket进行连接,另一种是短连接通过Http进行连接。相较而言,短连接不损耗系统资源,只有当客户端app进行操作时才会与服务器端进行连接,而长连接客户端与服务器端是一直保持连接的,适用于服务器端主动向客户端推送信息服务,一些即时通讯。

    HTTP通信协议

    最近做了一个移动输液系统,用到了HTTP通信协议。以前做项目时没有用到过,自己摸索查找资料学习的。现在,我把自己对Http的理解拿出来和大家交流一下,有不对的地方,欢迎大家提出。HTTP协议通信有两种方法,一种是HttpGet,,另一种是HttpPost

    HttpGet客户端

        //通过HttpClient父类DefaultHttpClient获取client对象
        HttpClient client=new DefaultHttpClient();
        //url:服务器端和客户端当前是连在一个局域网中,180.104.151.72是服务器端的IP地址,8080是tomacat接口,MobileInfusionServer是在tomacat中运行的一个项目名称,LoginServlet是一个Servlet,loginName和loginPassword是Android端app传入服务器中的字符串。
        url="http://180.104.151.72:8080/MobileInfusionServer/LoginServlet?LoginName="+loginName+"&loginPassword="+loginPassword;
        //获取HttpGet方法的对象
        HttpGet get=new HttpGet(url);
        //响应
        HttpResponse response = client.execute(get);
        //statusCode是与服务器端Servlet请求返回的验证码
        int statusCode = response.getStatusLine().getStatusCode();
        //如果statusCode==200,说明请求成功,在Android里是HttpStatus中的SC_OK,否则返回异常
        if(statusCode!=HttpStatus.SC_OK){
        throw new ServiceRulesException(
            "服务器端异常";
         }
        //接收服务器返回值,编码方式是UTF-8
        String result=EntityUtils.toString(response.getEntity(), "UTF-8");
        //假设服务器端返回值是success字符串
        if(result.equals("success")){
    
        }else{
         throw new ServiceRulesException(
            "服务器端异常";
        }
    

    HttpGet请求的服务器端LoginServlet

    public void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        //设置接收返回值的字符编码方式为UTF-8
        request.setCharacterEncoding("UTF-8");
        response.setCharacterEncoding("UTF-8");
        //接收客户端传入的字符串loginName,LoginPassword
        String loginName=request.getParameter("LoginName");
        String loginPassword=request.getParameter("LoginPassword");、
        //在控制台打印传入的值
        System.out.println(loginName);
        System.out.println(loginPassword);
        /**
         * text/html
         */
        response.setContentType("text/html;charset-UTF-8");
        /**
         *  通过response.getWriter()获取out对象返回给客户端值
         */
        PrintWriter out=null;
        try {
            out=response.getWriter();
            /**
             * 登陆的业务判断
             */
            if(loginName.equals("zcl")&&loginPassword.equals("123")){
                //登陆成功
                out.print("success");
            }else {
                out.print("failed");
            }
        } finally{
            if(out!=null){
                out.close();
            }
        }
    }
    

    HttpPost : Android客户端

    public class UserServiceImpl implements UserService {
        private static final String TAG = "UserServiceImpl";
    
        @Override
        public void userLogin(String loginName, String loginPassword)
                throws Exception {
            // TODO Auto-generated method stub
            Log.d(TAG, loginName);
            Log.d(TAG, loginPassword);
    
            /**
             * NameValuePair----->List<NameValuePair>----->HttpEntity---->HttpPost--
             * -->HttpClient
             */
            HttpParams params = new BasicHttpParams();
            // 通过params设置请求字符集
            HttpProtocolParams.setContentCharset(params, HTTP.UTF_8);
            // 设置客户端和服务器连接的超时时间
            HttpConnectionParams.setConnectionTimeout(params, 3000);
            // 设置服务器响应的超时时间------》SocketTimeOutException
            HttpConnectionParams.setSoTimeout(params, 3000);
            // 配置协议和端口
            SchemeRegistry schreg = new SchemeRegistry();
            schreg.register(new Scheme("http", PlainSocketFactory
                    .getSocketFactory(), 80));
            schreg.register(new Scheme("https", PlainSocketFactory
                    .getSocketFactory(), 433));
            ClientConnectionManager conman = new ThreadSafeClientConnManager(
                    params, schreg);
    
            //通过HttpClient解析url地址
            HttpClient client = new DefaultHttpClient(conman, params);
            String url="http://180.104.151.72:8080/MobileInfusionServer/LoginServlet";
            HttpPost post = new HttpPost(url);
    
            //将要传入服务器端的字符串放入NameValuePair
            NameValuePair paramloginName = new BasicNameValuePair("LoginName",
                    loginName);
            BasicNameValuePair paramloginPassword = new BasicNameValuePair(
                    "LoginPassword", loginPassword);
            //传入的是两个字符串,可以放入List集合中
            List<NameValuePair> parameters = new ArrayList<NameValuePair>();
            parameters.add(paramloginName);
            parameters.add(paramloginPassword);
            post.setEntity(new UrlEncodedFormEntity(parameters, HTTP.UTF_8));
            HttpResponse response = client.execute(post);
    
            int statusCode = response.getStatusLine().getStatusCode();
            if (statusCode != HttpStatus.SC_OK) {
                throw new ServiceRulesException("服务器端异常");
            }
    
            String result = EntityUtils.toString(response.getEntity(), HTTP.UTF_8);
    
            if (result.equals("success")) {
    
            } else {
    
            }
    }
    

    HttpPost请求的服务器端LoginServlet

    和HttpGet方法一样,基于安全的角度看,建议使用Post方法
    

    将Http连接封装成一个工具类

    在一个项目中,我们通常会有很多个方法需要与服务器端进行Http连接,每个方法,我们都需要这样一步步进行连接,这样就会显得代码冗余,为了节省程序猿的工作量,我们需要将他们封装成一个工具类,每次连接时,我们只需要调用这个工具类就可以了。

    package com.xzit.mobileinfusion.util;
    import java.util.List;
    
    import org.apache.http.HttpResponse;
    import org.apache.http.HttpStatus;
    import org.apache.http.NameValuePair;
    import org.apache.http.client.HttpClient;
    import org.apache.http.client.entity.UrlEncodedFormEntity;
    import org.apache.http.client.methods.HttpPost;
    import org.apache.http.conn.ClientConnectionManager;
    import org.apache.http.conn.scheme.PlainSocketFactory;
    import org.apache.http.conn.scheme.Scheme;
    import org.apache.http.conn.scheme.SchemeRegistry;
    import org.apache.http.impl.client.DefaultHttpClient;
    import org.apache.http.impl.conn.tsccm.ThreadSafeClientConnManager;
    import org.apache.http.params.BasicHttpParams;
    import org.apache.http.params.HttpConnectionParams;
    import org.apache.http.params.HttpParams;
    import org.apache.http.params.HttpProtocolParams;
    import org.apache.http.protocol.HTTP;
    import org.apache.http.util.EntityUtils;
    
    import android.util.Log;
    
    import com.xzit.mobileinfusion.activity.LoginActivity;
    import com.xzit.mobileinfusion.service.ServiceRulesException;
    
    
    public class HttpConnectUtil {
    
        private HttpParams params;
    
        private ClientConnectionManager conman;
    
        private HttpClient client;
    
        private HttpPost post;
    
        private HttpResponse response;
    
    
        public HttpConnectUtil() {
            super();
            /**
             * NameValuePair----->List<NameValuePair>----->HttpEntity---->HttpPost--
             * -->HttpClient
             */
            params = new BasicHttpParams();
            // 通过params设置请求字符集
            HttpProtocolParams.setContentCharset(params, HTTP.UTF_8);
            // 设置客户端和服务器连接的超时时间
            HttpConnectionParams.setConnectionTimeout(params, 3000);
            // 设置服务器响应的超时时间------》SocketTimeOutException
            HttpConnectionParams.setSoTimeout(params, 3000);
            // 配置协议和端口
            SchemeRegistry schreg = new SchemeRegistry();
            schreg.register(new Scheme("http", PlainSocketFactory
                    .getSocketFactory(), 80));
            schreg.register(new Scheme("https", PlainSocketFactory
                    .getSocketFactory(), 433));
            conman = new ThreadSafeClientConnManager(
                    params, schreg);
            client = new DefaultHttpClient(conman, params);
        }
    
        /**
         * 连接Client,传入对象到服务上
         * @param uri
         * @return
         */
        public String postMessage(String uri,List<NameValuePair> parameters) throws Exception{
            post = new HttpPost(uri);
            post.setEntity(new UrlEncodedFormEntity(parameters, HTTP.UTF_8));
            response = client.execute(post);
    
            int statusCode = response.getStatusLine().getStatusCode();
            if (statusCode != HttpStatus.SC_OK) {
                throw new ServiceRulesException("服务器端错误");
            }
    
            String result = EntityUtils.toString(response.getEntity(), HTTP.UTF_8);
            return result;
        }
    
    
        /**
         * 连接Client,不传入对象到服务器上,直接从服务器端获取返回值
         * @param uri
         * @return
         */
        public String postMessage(String uri) throws Exception{
            post = new HttpPost(uri);
            response = client.execute(post);
    
            int statusCode = response.getStatusLine().getStatusCode();
            if (statusCode != HttpStatus.SC_OK) {
                throw new ServiceRulesException("服务器端错误");
            }
            Log.e("aa", "66666666");
            String result = EntityUtils.toString(response.getEntity(), HTTP.UTF_8);
            Log.e("aa", result);
            return result;
        }
    
    
    }
    

    调用HttpConnectUtil工具类进行连接

    package com.xzit.mobileinfusion.serviceImpl;
    
    import java.util.ArrayList;
    import java.util.List;
    
    import org.apache.http.NameValuePair;
    import org.apache.http.client.HttpClient;
    import org.apache.http.client.methods.HttpPost;
    import org.apache.http.impl.client.DefaultHttpClient;
    import org.apache.http.message.BasicNameValuePair;
    import org.json.JSONException;
    import org.json.JSONObject;
    
    import android.util.Log;
    
    import com.xzit.mobileinfusion.service.PatientService;
    import com.xzit.mobileinfusion.util.HttpConnectUtil;
    
    public class PatientServiceImpl implements PatientService{
        private static final String TAG = "PatientServiceImpl";
    
        /**
         * 注册账号
         */
        @Override
        public String patientRegiter(String s_p_name, String s_sex, String s_id_card) throws Exception {
            Log.d(TAG,s_p_name);
            Log.d(TAG,s_id_card);
    
            String uri = "http://192.168.1.100:8080/MobileInfusionServer/AddPatientAction";
    
            /**
             * JSON数据的封装
             * **********************************************
             */
            JSONObject object = new JSONObject();
            object.put("p_name", s_p_name);
            object.put("sex", s_sex);
            object.put("id_card", s_id_card);
    
            NameValuePair parameter = new BasicNameValuePair("Patient",
                    object.toString());
            List<NameValuePair> params = new ArrayList<NameValuePair>();
            params.add(parameter);
    
            /**
             *调用HttpConnectUtil工具类进行Http连接
             */
            String result = new HttpConnectUtil().postMessage(uri, params);
    
            return result;
        }
    
    展开全文
  • APP Inventor 基于网络微服务器的即时通信APP 最近,老师要求我们用APP Inventor做一个APP,简单地做了一个即时通信APP(超低配版的QQ,逃~),连肝了几个晚 上,目前已是比较稳定的版本了,虽然还有很多小问题...

    APP Inventor 基于网络微服务器的即时通信APP

     最近,老师要求我们用APP Inventor做一个APP,简单地做了一个即时通信的APP(超低配版的QQ,逃~),连肝了几个晚

    上,目前已是比较稳定的版本了,虽然还有很多小问题,但基本不影响使用了。

    目前,支持双人聊天(好友上限为6人),多人群聊(群组上限2个,每个群聊人数上限6人),个人主页等功能。每个账号的

    好友等数据会与本地绑定,而不是与账号绑定,那样感觉会有点麻烦就没整那样的操作,下面来看看具体代码吧。

    项目下载链接:https://pan.baidu.com/s/1nC_orsFa4yLPmrV5Zqy3nw。

    1.登录主界面  

    利用网络微数据库存储账号信息,登录时进行比较,好友群组数据通过微数据库保存在本地。

     相关代码:

    2.好友列表界面

    隐身于在线信息实时同步到网络微数据库,并且在好友列表里显示,好友列表由一些列的按钮组成,初始时默认不可见,没添加

    一个好友使用一个按钮,最多添加六个。点击好友进入聊天界面,长按好友用户名,进入好友主页。

     相关代码:

    3.好友聊天界面 当点击发送时,待发送信息会被上传到网络微数据库,标签为本账号的用户名,存储值为待发送信息,调用计时器到计时点 时,就根据对方用户名,上网络微数据库寻找对方发送的信息。

    相关代码:

    4.群组列表界面

     实现与好友列表相似。

    5.群聊界面

     实现好友聊天相似,不过要多加几个网络微数据库实时接收各个好友发送的消息。

    6.个人主页界面

     基本功能。

     

    好的,以上就是主要内容,有许多处代码都省略了。项目下载链接:https://pan.baidu.com/s/1nC_orsFa4yLPmrV5Zqy3nw。

    展开全文
  • SSH框架如何与APP通信

    千次阅读 2016-11-05 14:46:48
    像我这种做APP出身的,就特想实现跟服务器通信。 要解决的问题就是如何接受APP传来的数据(一般为json格式)和返回数据(一般为json格式)。下面就进行一下说明。 如何接受APP传来的数据: 我是让action实现了...
  • WebSocket作为一种解决web应用双向通信的协议由HTML5规范引出,是一种建立在TCP协议基础上的全双工通信...它是一个应用层协议,它出现是为了解决HTTP的痛点,希望在服务器与浏览器之间建立一条不受限制的双向通信的通道
  • 针对拼接屏智能移动控制系统中APP与C++服务器之问的通信问题,本文设计并提出了一种基于TCP的Socket网络通信方案,通过采用XML数据传输技术, BASE64图片编码技术以及AES和RSA混合加密技术,实现了APP与服务器之间的...
  • 作为一个移动互联网App,天生是需要和服务器通信的。那么,服务器如何识别客户端的身份?我们如何保证数据传输过程中的安全性?要靠两个东西:使用AppKey做身份识别,使用AppSecret校验数据。 这两个东西的定义...
  • 手机上的APP是如何与服务器通信

    千次阅读 2019-12-07 16:24:39
    讲解CS通信之前,先大致了解一下我们平时手机通话的流程。语音信号经过脉冲采样变成数字信号,通过手机GSM模块发送无线信号至基站进入无线接入网,根据对方手机号查询数据库后通过骨干路由器转入核心网,一连串中.....
  • stm32f103c8t6控制ESP8266手机APP通信

    千次阅读 多人点赞 2021-01-04 19:39:26
    stm32f103c8t6控制ESP8266手机APP通信 之前已经发表过利用stm32控制蓝牙模块手机APP通信的文章,那么现在我就来说说用WIFI模块来控制手机APP的通信 首先需要的器件如下: stm32f103c8t6 ESP8266-01S(默认波特...
  • SplitExpanse-App 通过Web服务器通信来提供SplitExpanse Web应用程序的相同功能的Android应用程序该应用程序内置于android studio中,并使用JSON数据格式Web服务器通信
  • 大家好,最近要要做一个APP同PHP服务器通信的系统,APP端通过微信登录, 同时需要APP同PHP服务器进行连接,通信,实现将APP端登录的微信用户的 相关信息、数据保存到PHP服务器,以便下次APP登录可以获取到这些...
  • Django服务器与App(Android)客户端的简单实现Django后台搭建 作者是一个技术小白,这也是本人的第一篇文章,虽然网上关于Django和Android结合搭建app的文章很多,但是还是想要根据自己在搭建过程中遇到的问题写一...
  • UDP Client客户端 http://blog.csdn.net/shankezh/article/details/50731287 UDP Server服务器 http://blog.csdn.net/shankezh/article/details/51452811 TCP Client客户端 很快补上 TCP Server服务器 很快补上
  • 客户端与服务器程序通信

    千次阅读 2017-07-11 10:17:03
    客户端与服务器通信方式的简介。
  • 最近我们要做一个安卓APP...还是回调到我们服务器,然后让服务器app通信进行登录呢? 现在市面上应该有很多这样的例子,不知道他们是怎么弄的,我主要是搞php服务器端的,所以对app不太了解,求大神指点,先谢谢了!
  • app与后台通信完整流程

    万次阅读 多人点赞 2017-04-22 13:32:52
    前言:接着补充app后台(也叫服务端开发)的基础知识。基础要夯实,不然哪来的万张高楼?正文: 问1:整个前台后台交互的流程是个什么样子? 答:基于http协议的app前后台交互包含以下几个步骤: 1.建立连接:前台...
  • Android Socket 专题: UDP Client客户端 ... UDP Server服务器http://blog.csdn.net/shankezh/article/details/51452811 TCP Client客户端 http://blog.csdn.net/...
  • 读取服务器数据App

    千次阅读 2015-05-03 22:23:36
    最近学习网络通信,socket通信模式,所以自己想做一个App练习一下。  这个app采用IOCP完成端口模式,所以就叫IOCP Test吧。采用C/S结构。练习计划是这样的:  1:需求分析;  2:服务器端和客户端功能确定; ...
  • XMPP_app 这是使用 XMPP 协议处理客户端和服务器之间通信的 android 应用程序

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 119,593
精华内容 47,837
关键字:

服务器如何与app通信