博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Socket客户端服务器连接
阅读量:2392 次
发布时间:2019-05-10

本文共 6555 字,大约阅读时间需要 21 分钟。

首先客户端设置几个按钮:分别是连接服务器,发送消息,接收消息,关闭连接

新建两个Moudle:分别是客户端和服务器

在客户端和服务器的manifests中添加权限:

客户端中的java程序:
package com.newer.client;import android.net.Uri;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.util.Log;import android.view.View;import com.google.android.gms.appindexing.Action;import com.google.android.gms.appindexing.AppIndex;import com.google.android.gms.appindexing.Thing;import com.google.android.gms.common.api.GoogleApiClient;import java.io.BufferedReader;import java.io.BufferedWriter;import java.io.IOException;import java.io.InputStreamReader;import java.io.OutputStream;import java.io.OutputStreamWriter;import java.io.PrintWriter;import java.net.Socket;public class MainActivity extends AppCompatActivity {    Socket csocket;//客户端的socket    OutputStream os;//socket流    BufferedWriter bw;    PrintWriter pw;    BufferedReader br;    /**     * ATTENTION: This was auto-generated to implement the App Indexing API.     * See https://g.co/AppIndexing/AndroidStudio for more information.     */    private GoogleApiClient client;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        // ATTENTION: This was auto-generated to implement the App Indexing API.        // See https://g.co/AppIndexing/AndroidStudio for more information.        client = new GoogleApiClient.Builder(this).addApi(AppIndex.API).build();    }    //创建客户端并连接    public void startClient(View view) {        //创建客户端必须放到线程中做,开始线程        new Thread(new Runnable() {            @Override            public void run() {                try {                    if(csocket ==null)                        csocket = new Socket("127.0.0.1", 54321);                } catch (IOException e) {                    e.printStackTrace();                }            }        }).start();    }    public void sendMsg(View view) {        new Thread(new Runnable() {            @Override            public void run() {                try {                    os = csocket.getOutputStream();                    bw = new BufferedWriter(new OutputStreamWriter(os));                    pw = new PrintWriter(bw,true);                    pw.println("hello server");                } catch (IOException e) {                    e.printStackTrace();                }            }        }).start();    }    public void recMsg(View view) {        new Thread(new Runnable() {            @Override            public void run() {                while(true){                    try {                        br = new BufferedReader(new InputStreamReader(csocket.getInputStream()));                        String res = br.readLine();                        if(res != null)                            Log.d("TAG","server say:"+res);                    } catch (IOException e) {                        e.printStackTrace();                    }                }            }        }).start();    }    public void closeClient(View view) {        //关闭 socket        if(csocket.isBound())        {            try {                csocket.close();                csocket = null;            } catch (IOException e) {                e.printStackTrace();            }        }    }    /**     * ATTENTION: This was auto-generated to implement the App Indexing API.     * See https://g.co/AppIndexing/AndroidStudio for more information.     */    public Action getIndexApiAction() {        Thing object = new Thing.Builder()                .setName("Main Page") // TODO: Define a title for the content shown.                // TODO: Make sure this auto-generated URL is correct.                .setUrl(Uri.parse("http://[ENTER-YOUR-URL-HERE]"))                .build();        return new Action.Builder(Action.TYPE_VIEW)                .setObject(object)                .setActionStatus(Action.STATUS_TYPE_COMPLETED)                .build();    }    @Override    public void onStart() {        super.onStart();        // ATTENTION: This was auto-generated to implement the App Indexing API.        // See https://g.co/AppIndexing/AndroidStudio for more information.        client.connect();        AppIndex.AppIndexApi.start(client, getIndexApiAction());    }    @Override    public void onStop() {        super.onStop();        // ATTENTION: This was auto-generated to implement the App Indexing API.        // See https://g.co/AppIndexing/AndroidStudio for more information.        AppIndex.AppIndexApi.end(client, getIndexApiAction());        client.disconnect();    }} 服务器的java程序:
package com.newer.server;import android.os.Handler;import android.os.Message;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.util.Log;import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.net.ServerSocket;import java.net.Socket;public class MainActivity extends AppCompatActivity {    ServerSocket sSocket;    Socket cSocket;    BufferedReader br;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        initServer();    }    private void initServer() {        new Thread(new Runnable() {            @Override            public void run() {                try {                    sSocket = new ServerSocket(54321);                    Log.d("TAG","服务端开启,等待客户端连接");                    cSocket =  sSocket.accept();                    Log.d("TAG","客户端连接成功:"+cSocket.getInetAddress());                    mHanler.sendEmptyMessage(2);                } catch (IOException e) {                    e.printStackTrace();                }            }        }).start();    }    Handler mHanler = new Handler(new Handler.Callback() {        @Override        public boolean handleMessage(Message msg) {            if(msg.what==2){                recMsg();            }            return false;        }    });    private void recMsg(){        new Thread(new Runnable() {            @Override            public void run() {                try {                    br = new BufferedReader(new InputStreamReader(                            cSocket.getInputStream()));                    String res = br.readLine();                    if(res!= null)                        Log.d("TAG","client say:"+res);                } catch (IOException e) {                    e.printStackTrace();                }            }        }).start();    }} 先运行服务器程序,显示服务器等待客户端连接。
 
 
 

转载地址:http://rylab.baihongyu.com/

你可能感兴趣的文章
mysql的比较运算
查看>>
Data Breach Report
查看>>
再探偏移注射
查看>>
DNS Security Tips
查看>>
符号执行
查看>>
Remote Installation Service (RIS) in Windows Server 2003
查看>>
Layer Four Traceroute
查看>>
Hardening guide for Apache 2.2.15 on RedHat 5.4 (64bit edition)
查看>>
Microsoft Outlook Web Access (OWA) version 8.2.254.0 information disclosure vulnerability
查看>>
STP mitm attack idea
查看>>
Month of PHP Security - Summary
查看>>
近期将要购买的图书
查看>>
nginx Directory Traversal Vulnerability
查看>>
Linux下apache+svn+ssl完美结合搭建安全版本控制平台
查看>>
Nginx 0.8.35 Space Character Remote Source Disclosure
查看>>
showrun的cissp经验谈
查看>>
6月4日要买的书
查看>>
nginx Remote Source Code Disclosure and Denial of Service Vulnerabilities
查看>>
Anti-sec安全培训 部分试看视频
查看>>
FreeBSD kernel NFS client local vulnerabilities
查看>>