精华内容
下载资源
问答
  • android与服务器通信

    2012-06-12 11:20:59
    里面是一个android客户端和一个webservice服务端,实现了一个登录功能,直接可以使用,是源代码!你值得拥有!你懂得
  • 然后就去网上查代码,找了很久发现一个大牛写的很详细>>> 跳转一:android:接收以及发送消息1,首先实例化socket 即 socket = new Socket(服务器IP, 服务器端口号); 两个参数,参1为String类型,参2为Int类型2,接收...

    最近接触的一个案例需要用到通讯方式,首先想到的是socket通讯,–代码比较简单;然后就去网上查代码,找了很久发现一个大牛写的很详细>>> 跳转

    一:android:接收以及发送消息

    1,首先实例化socketsocket = new Socket(服务器IP, 服务器端口号); 两个参数,参1为String类型,参2为Int类型
    2,接收服务器信息
    BufferedReader in = new BufferedReader(   new InputStreamReader(socket.getInputStream()));   
    String msg = in.readLine();  
    “ok,其中msg就是我们在服务器上读到的数据”
    3.向服务器发送信息
    BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream()));
        bw.write("111");//111为发送的内容
        bw.flush();//提交发送信息请求
        bw.close();//关闭

    二:服务器端:接收与发送给android消息

    ServerSocket ss=new ServerSocket(port);
    while(true){
    //服务器端一直在运行等待客户端发送socket,对于一个新的socket,服务器则建立一个新的socket.
    Socket s=ss.accept();
    1.读消息:与客户端完全相同
    // 接受客户端信息  
    BufferedReader in = new BufferedReader(new InputStreamReader(client.getInputStream()));                         
    2.发消息:与客户端程序完全相同
    BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream()));
    bw.write("111");//111为发送的内容
    bw.flush();//提交发送信息请求
    }

    三:网络权限,既然是涉及到通讯,必不可少的就是网络访问权限

    <uses-permission android:name="android.permission.INTERNET"/>

    四:关于PrintWriter与BufferedWriter的区别

    涉及到的一个知识点
    1. PrintWriter的print、println方法可以接受任意类型的参数,而BufferedWriter的write方法只能接受字符、字符数组和字符串;
    2. PrintWriter的println方法自动添加换行,BufferedWriter需要显示调用newLine方法;
    3. PrintWriter的方法不会抛异常,若关心异常,需要调用checkError方法看是否有异常发生
    4. PrintWriter构造方法可指定参数,实现自动刷新缓存(autoflush);
    5. PrintWriter的构造方法更广。

    五:其它知识点
    贴一跳转>>>这个帖子是讲android模拟器当客户端,电脑当服务器使用的,经过测试没有问题。注意IP一定为android的固定通信ip–10.0.2.2.
    贴二跳转>>>也可以利用android客户端当服务器,pc机器当客户端通信,也可以通过多个模拟器之间进行通信,但需要窗口重定向。

    展开全文
  • Android与服务器通信方式主要有两种,一是Http通信,一是Socket通信。   两者的最大差异在于: http连接使用的是“请求—响应方式”,即在请求时建立连接通道,当客户端向服务器发送请求后,服务器端才能向...

    Android与服务器的通信方式主要有两种,一是Http通信,一是Socket通信。

     

    两者的最大差异在于:

    http连接使用的是“请求—响应方式”,即在请求时建立连接通道,当客户端向服务器发送请求后,服务器端才能向客户端返回数据。

    Socket通信中:

    基于TCP/IP协议的通信则是在双方建立起连接后就可以直接进行数据的传输,在连接时可实现信息的主动推送,而不需要每次由客户端想服务器发送请求。

    而UDP则是提供无连接的数据报服务,UDP在发送数据报前不需建立连接,不对数据报进行检查即可发送数据包。。

     

    TCP与UDP传输/接收数据:

    TCP使用流套接字传输数据ServerSocket 通过inputstream读取接收的数据。

    UDP使用数据包套接字传输数据DatagramSocket 通过DatagramPacket读取数据

     

    TCP在连接之前需要与服务端三次握手 确认服务端开启才收发数据

    UDP只需指定ip和端口 不管服务器有没有开启 都丢出数据,

    两个在接收数据时都是堵塞状态.

     

    socket(套接字)是通信的基石,是支持TCP/IP协议的网络通信的基本操作单元。它是网络通信过程中端点的抽象表示,包含进行网络通信必须的五种信息:连接使用的协议,本地主机的IP地址,本地进程的协议端口,远地主机的IP地址,远地进程的协议端口.

    socket就是一组调用接口(API),封装了做tcp/ip开发的网络接口,通过Socket,我们才能使用传输层协议

     

    但在实际网络应用中,客户端到服务器之间的通信往往需要穿越多个中间节点,例如路由器、网关、防火墙等,大部分防火墙默认会关闭长时间处于非活跃状态的连接而导致 Socket 连接断连,因此需要通过轮询告诉网络,该连接处于活跃状态。

    需要心跳机制

     

    http协议已将服务端 IP或者端口号 数据格式 长度等 封装好

    socket可以理解为封装了 网络接口这些内容

     

    tcp:客户端向服务端发起请求,通过socket确认向哪个服务端发起,连接之后 服务端开启一个新的线程保证和这个客户端连接,并且需要心跳机制 知道二者都在线,有新的客户端再连接时再开启新的线程.如果心跳断开 则认为不在线

     

    http:客户端向服务端发起请求 服务端回复数据,断开连接.

     

    udp:向目标socket直接丢数据包,不管目标服务端是否在线

     

    TCP/IP协议是传输层协议,主要解决数据 如何在网络中传输,而HTTP是应用层协议,主要解决如何包装数据,而socket则是对TCP/IP协议的封装和应用(程序员层面上)。实际上http协议就是建立在tcp/ip协议之上的。

    展开全文
  • $ret = array('result'=>'Hello Wolrd'); echo json_encode($ret);...2.客户端(android) public class MainActivity extends Activity { private Button btn; private Handler handler; pri

    1.服务端(php)

    <?php 
    $ret = array('result'=>'Hello Wolrd');
    echo json_encode($ret);
    ?>

    2.客户端(android)

    public class MainActivity extends Activity {
    	private Button btn;
    	private Handler handler;
    	private String src;
     
    	@Override
    	protected void onCreate(Bundle savedInstanceState) {
    		super.onCreate(savedInstanceState);
    		setContentView(R.layout.activity_main);//activity_main.xml文件省略
    		btn=(Button) findViewById(R.id.button);
    		btn.setOnClickListener(new OnClickListener() {
     
    			@Override
    			public void onClick(View arg0) {
    				// TODO Auto-generated method stub
     
    				new Thread(new Runnable() {
     
    					@Override
    					public void run() {
    						// TODO Auto-generated method stub
    						src=con();
    						Message m=handler.obtainMessage();
    						handler.sendMessage(m);
    					}
    				}).start();
    			}
    		});
    		handler=new Handler()
    		{
    			public void handleMessage(Message msg) {
    				try {
    					JSONObject jsonObject = new JSONObject(src);
    					String content=jsonObject.getString("result");
    					btn.setText(content);		
    				} catch (JSONException e) {
    					// TODO Auto-generated catch block
    					e.printStackTrace();
    				}
    			}
    		};
     
    	}
     
    	public String con()
    	{
    		src=null;
    		try {
    			String str ="hello";
    			URLConnection urlconn = new URL("http://10.0.0.99/t.php" ).openConnection();
    			BufferedReader reader = new BufferedReader(new InputStreamReader(urlconn.getInputStream(), "utf-8"));
    			String line = null;
    			src="";
    			while ((line = reader.readLine()) != null) {
    				src += line;
    			}
    			System.err.println(src);
    		} catch (Exception e) {
    			e.printStackTrace();
    		}
    		return src;
    	}
    }
    3.在AndroidManifest.xml中添加访问网络权限 ,进行如下配置:
    <uses-permission android:name="android.permission.INTERNET" />
    4.结果显示

    展开全文
  • 还在为android程序连不到服务端程序而犯愁吗?...本文件分为解压后分为两个部分,android客户端,和servlet写的服务器端 程序。代码少而精 让大家在掌握知识的同时,实现节省时间快速模仿 还等什么 赶快下载吧
  • 本篇文章主要介绍了Android使用http协议与服务器通信Android与服务器通信通常采用HTTP通信方式和Socket通信方式,而HTTP通信方式又分get和post两种方式。感兴趣的小伙伴们可以参考一下。
  • Android对于http的网络通信,提供了标准的java接口——httpURLConnection接口,以及apache的接口——httpclient接口。其中我自己用的比较多的而是httpclient这个接口,因为它的功能更为丰富很有效。 同时http通信也...

    http通信,以xml或者json为载体,相互通信数据。

    Android对于http的网络通信,提供了标准的java接口——httpURLConnection接口,以及apache的接口——httpclient接口。其中我自己用的比较多的而是httpclient这个接口,因为它的功能更为丰富很有效。

    同时http通信也分为post方式和get的方式,两个相比较的话,post传送的数据量比较大,安全性也比较高。因此在做数据查询时,我会用get方式;而在做数据添加、修改或删除时,我就用Post方式
    以下是基于httpclient接口,用get和post的方式通信的代码。
    (get方式)

    protected void onCreate(Bundle savedInstanceState) {
    
           super.onCreate(savedInstanceState);
    
           setContentView(R.layout.login);
    
           TextView text = (TextView) this.findViewById(R.id.text_http);
    
           String httpurl = “http://10.0.2.2:8080/SIM_SERVER/org/Org-list”;
    
           //①httpget连接对象
    
           HttpGet httpRequest = new HttpGet(httpurl);
    
           //②取得httpclient的对象
    
           HttpClient httpclient = new DefaultHttpClient();
    
           try {
    
             //③请求httpclient,取得httpResponse
    
               HttpResponse httpResponse = httpclient.execute(httpRequest);
    
        //④判断请求是否成功     if(httpResponse.getStatusLine().getStatusCode()==HttpStatus.SC_OK){             //⑤取得返回的字符串
    
                  String strResult = EntityUtils.toString(httpResponse.getEntity());
    
                  text.setText(strResult);
    
               }else{
    
                  text.setText(“请求失败”);
    
               }
    
           } catch (ClientProtocolException e) {
    
               e.printStackTrace();
    
           } catch (IOException e) {
    
               e.printStackTrace();
    
           }
    
        }
    
    (post方式)
    
    protected void onCreate(Bundle savedInstanceState) {
    
           super.onCreate(savedInstanceState);
    
           this.setContentView(R.layout.login);
    
           TextView text = (TextView) this.findViewById(R.id.text_http);
    
           //①http连接地址
    
           String url = “http://10.0.2.2:8080/SIM_SERVER/and/Android-test”;
    
            //②取得httppost连接对象
    
           HttpPost httpPost = new HttpPost(url);
    
            //③使用NameValuePair来保存要传递的Post参数
    
           List<NameValuePair> params = new ArrayList<NameValuePair>();
    
            //④添加要传递的参数
    
           params.add(new BasicNameValuePair(“parentId”, “0″));
    
     
    
           HttpEntity httpentity;
    
           try {
    
                //⑤设置字符集
    
               httpentity = new UrlEncodedFormEntity(params, “utf-8″);
    
                //⑥把字符集设置在请求request里面
    
               httpPost.setEntity(httpentity);
    
                 //⑦取得httpclient
    
               HttpClient httpClient = new DefaultHttpClient();
    
                 //⑧请求发送,并获得response
    
               HttpResponse httpResponse = httpClient.execute(httpPost);
    
    //⑨判断请求是否成功     if(httpResponse.getStatusLine().getStatusCode()==HttpStatus.SC_OK){              //⑩取得返回字符串
    
                  String strResult = EntityUtils.toString(httpResponse.getEntity());
    
                  text.setText(strResult);
    
               }else{
    
                  text.setText(“请求失败”);
    
               }
    
           } catch (UnsupportedEncodingException e) {
    
               e.printStackTrace();
    
           } catch (ClientProtocolException e) {
    
               e.printStackTrace();
    
           } catch (IOException e) {
    
               e.printStackTrace();
    
           }
    
     
    
        }


    展开全文
  • 本示例以Servlet为例,演示Android与Servlet的通信。...众所周知,Android与服务器通信通常采用HTTP通信方式和Socket通信方式,而HTTP通信方式又分get和post两种方式。至于Socket通信会在以后的博文中介绍。
  • 主要为大家详细介绍了android利用websocket协议与服务器通信,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
  • 众所周知,Android与服务器通信通常采用HTTP通信方式和Socket通信方式,而HTTP通信方式又分get和post两种方式。至于Socket通信会在以后的博文中介绍。 HTTP协议简介:  HTTP (Hypertext Transfer ...
  • Android客户端与服务器通信的基本Demo,服务器端部署在MyEclipse上。
  • Android与服务器通信

    2017-07-14 17:25:31
    服务器开发语言我选择的是php  服务器搭建完成之后,在服务器www目录下写一个demo.php,php的代码如下:    if($_POST['username'] == "admin"){ ... 然后在安卓中向该服务器发送请求:  
  • android操作通过http与服务器通信

    千次阅读 2015-08-20 15:01:29
      本示例以Servlet为例,演示Android与Servlet的通信。...众所周知,Android与服务器通信通常采用HTTP通信方式和Socket通信方式,而HTTP通信方式又分get和post两种方式。至于Socket通信会在以后的博文

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 72,366
精华内容 28,946
关键字:

安卓如何与服务器通信