zoukankan      html  css  js  c++  java
  • Android 使用Socket进行通信(Android)

    一。服务器程序

    服务器程序需要在PC上运行,该程序比较的简单,因此不需要建立Android项目,直接定义一个JAVA类,并且运行该类即可。它仅仅建立ServerSocket监听,并使用Socket获取输入输出流。

    SimpleServer
    
    import java.io.IOException;
    import java.io.OutputStream;
    import java.net.ServerSocket;
    import java.net.Socket;
    
    
    public class SimpleServer {
    
        /**
         * @param args
         * @throws IOException 
         */
        public static void main(String[] args) throws IOException {
            // TODO Auto-generated method stub
    
            //创建一个ServerSocket,用于监听客户端socket的连接请求
            ServerSocket ss=new ServerSocket(30000);
            //采用循环不断接受来自客户端的请求,服务器端也对应产生一个Socket
            while(true){
                Socket s=ss.accept();
                OutputStream os=s.getOutputStream();
                os.write("您好,您收到了服务器的新年祝福!
    ".getBytes("utf-8"));
                os.close();
                s.close();
        }
    
        }}

    二。客户端程序

    它仅仅使用Socket建立与制定的IP、制定端口的连接,并使用Socket获取输入输出流读取数据。该客户端程序是一个Android应用,因此还需要建立一个Android项目,改程序的界面包含一个文本框,用于显示从服务器读取的字符串的数据。

    SimpleClient
    
    package my.learn.tcp;
    
    import java.io.BufferedReader;
    import java.io.IOException;
    import java.io.InputStreamReader;
    import java.net.Socket;
    import java.net.UnknownHostException;
    
    import android.app.Activity;
    import android.os.Bundle;
    import android.util.Log;
    import android.widget.EditText;
    
    public class SimpleClient extends Activity {
        private EditText show;
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            // TODO Auto-generated method stub
            super.onCreate(savedInstanceState);
            setContentView(R.layout.main);
            show = (EditText) findViewById(R.id.show);
    
            try {
    
                Socket socket = new Socket("自己计算机的IP地址", 30000);
                //设置10秒之后即认为是超时
                socket.setSoTimeout(10000);
                BufferedReader br = new BufferedReader(new InputStreamReader(
                        socket.getInputStream()));
                String line = br.readLine();
    
                show.setText("来自服务器的数据:"+line);
    
                br.close();
                socket.close();
    
            } catch (UnknownHostException e) {
                // TODO Auto-generated catch block
                Log.e("UnknownHost", "来自服务器的数据");
                e.printStackTrace();
            } catch (IOException e) {
                Log.e("IOException", "来自服务器的数据");
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
    
        }
    
    }

    需要注意的是,在Manifest.xml文件当中,需要对互联网的访问进行授权

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

    效果图:

  • 相关阅读:
    通用权限管理设计 之 数据库结构设计
    jQuery LigerUI 插件介绍及使用之ligerDateEditor
    jQuery LigerUI 插件介绍及使用之ligerTree
    jQuery LigerUI V1.01(包括API和全部源码) 发布
    jQuery liger ui ligerGrid 打造通用的分页排序查询表格(提供下载)
    jQuery LigerUI V1.1.5 (包括API和全部源码) 发布
    jQuery LigerUI 使用教程表格篇(1)
    jQuery LigerUI V1.0(包括API和全部源码) 发布
    jQuery LigerUI V1.1.0 (包括API和全部源码) 发布
    nginx keepalived
  • 原文地址:https://www.cnblogs.com/zhujiabin/p/6252903.html
Copyright © 2011-2022 走看看