栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

安卓Socket通信案例

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

安卓Socket通信案例

本案例是实现编写客户端负责发送内容、服务器端用来接收内容的程序。

1.编写服务器端程序(hello.java)

该程序是负责接收数据,需要单独编译运行。可以采用eclipse编译,编译之后将文件保存在d盘。

如若存在c盘,可能会因为没有权限,命令提示符而不能正常执行。

public class hello implements Runnable {
    public static final String Server_ip="填写自己电脑的IP地址";
    public static final int Server_port=4000;//填写电脑内未被占用的端口号
    public void run() {
        System.out.println("S:Connectioning...");
        try{
            ServerSocket serverSocket=new ServerSocket(Server_port);
            while(true){
                Socket client=serverSocket.accept();
                System.out.println("S:Receing...");
                try {
                    BufferedReader breader=new BufferedReader(new InputStreamReader(client.getInputStream()));
                    String str=breader.readLine();
                    System.out.println("S:Received:"+str);
                } catch (Exception e) {
                    System.out.println("S:ERROR");
                    e.printStackTrace();
                }finally {
                    client.close();
                    System.out.println("S:Done");
                }
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    public static void main(String[] args) {
        Thread thread=new Thread(new hello());
        thread.start();
    }
}

上述代码中设置服务器端口为4000,然后通过 accept ()方法使服务器开始监听客户端的连接,然后通过 BufferReader 对象来接收输人流。最后关闭 Socket 和流。

2,编写客户端布局

文件客户端布局界面包含一个 EditText 组件和一个按钮,按钮负责把输人的内容发送到服务器端。




    

    

 2.编写 MainActivity 代码 

MainActivity 负责客户端的实现,在按钮事件中通过“ socket = new Socket ( ip ,port )” 请求连接服务器,并通过 BufferedWriter 发送消息。

public class MainActivity extends AppCompatActivity {
    private EditText mes;
    private Button send_btn;
    private String ip="自己电脑的IP地址";
    private int port=4000;//电脑内未被占用的端口号
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.layout);
        if(Build.VERSION.SDK_INT>8){
            StrictMode.ThreadPolicy policy=new StrictMode.ThreadPolicy.Builder().permitAll().build();
            StrictMode.setThreadPolicy(policy);
        }
        init();
    }
    public void init(){
        mes=(EditText) findViewById(R.id.mes);
        send_btn=(Button) findViewById(R.id.send);
        send_btn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                try {
                    String string=mes.getText().toString();
                    if(!TextUtils.isEmpty(string)){
                        SendMes(ip,port,string);
                    }
                    else{
                        Toast.makeText(MainActivity.this, "请先输入内容", Toast.LENGTH_SHORT).show();
                        mes.requestFocus();
                    }
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        });
    }
    private void SendMes(String ip,int port,String mes) throws UnknownHostException, IOException {
        try {
            Socket socket=null;
            socket=new Socket(ip,port);
            BufferedWriter writer=new BufferedWriter(new OutputStreamWriter(socket.getOutputStream()));
            writer.write(mes);
            writer.flush();
            writer.close();
            socket.close();
        }catch (UnknownHostException e){
            e.printStackTrace();
        }catch (IOException e){
            e.printStackTrace();
        }
    }
}

4.添加网络权限

5.运行运行程序,输入要发送的消息,然后单击“发送消息”按钮,出现的结果。

                  

客户端与服务器端连接成功并且发送了消息。这就是 Socket 通信的具体步骤,开发者可以使用 Socket 通信开发一些更为复杂的应用。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/888491.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号