Adroid Studio基于TCP协议的通信

来源:互联网 发布:下载强力卸载软件 编辑:程序博客网 时间:2024/05/21 20:47
activity_main:
package com.example.mysocketclient;import android.app.Activity;import android.os.AsyncTask;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.util.Log;import android.view.View;import android.widget.EditText;import android.widget.TextView;import android.widget.Toast;import java.io.BufferedReader;import java.io.BufferedWriter;import java.io.IOException;import java.io.InputStreamReader;import java.io.OutputStreamWriter;import java.net.Socket;public class MainActivity extends Activity {    EditText ip;    String ips;    EditText editText;    TextView text;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        ip = (EditText) findViewById(R.id.ip);        editText = (EditText) findViewById(R.id.edit);        text = (TextView) findViewById(R.id.text);        findViewById(R.id.connect).setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View v) {                connect();            }        });        findViewById(R.id.send).setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View v) {                send();            }        });    }    Socket socket = null;    BufferedWriter writer = null;    BufferedReader reader = null;    public void connect(){        ips = ip.getText().toString();            AsyncTask<Void,String,Void> read = new AsyncTask<Void, String, Void>() {                @Override                protected Void doInBackground(Void... params) {                    try {                        System.out.println("ip通过");                        socket = new Socket(ips,8080);                        System.out.println("ip通过");                        writer = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream()));                        reader = new BufferedReader(new InputStreamReader(socket.getInputStream()));                    } catch (IOException e) {                        e.printStackTrace();                    }                    try {                        while(true){                            String line = reader.readLine();                            if(line != null){                                publishProgress(line);                            }                        }                    } catch (IOException e) {                        e.printStackTrace();                    }                    return null;                }                @Override                protected void onProgressUpdate(String... values) {                    text.append("服务器说:"+values[0]+"\n");                    super.onProgressUpdate(values);                }            };            read.execute();    }    public void send(){        try {            text.append("我说:"+editText.getText().toString());            writer.append(editText.getText().toString());            editText.setText("");        } catch (IOException e) {            e.printStackTrace();        }finally {            if(writer!=null){                try {                    writer.flush();                } catch (IOException e) {                    e.printStackTrace();                }            }        }    }}
XML:
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    xmlns:tools="http://schemas.android.com/tools"    android:id="@+id/activity_main"    android:layout_width="match_parent"    android:layout_height="match_parent"    android:paddingBottom="@dimen/activity_vertical_margin"    android:paddingLeft="@dimen/activity_horizontal_margin"    android:paddingRight="@dimen/activity_horizontal_margin"    android:paddingTop="@dimen/activity_vertical_margin"    android:orientation="vertical"    tools:context="com.example.mysocketclient.MainActivity">    <LinearLayout        android:layout_width="match_parent"        android:layout_height="wrap_content">        <EditText            android:layout_weight="1"            android:layout_width="wrap_content"            android:layout_height="wrap_content"            android:text="10.108.232.108"            android:id="@+id/ip"/>        <Button            android:layout_width="wrap_content"            android:layout_height="wrap_content"            android:text="连接"            android:id="@+id/connect"/>    </LinearLayout>    <TextView        android:layout_weight="1"        android:layout_width="match_parent"        android:layout_height="match_parent"        android:text=""        android:id="@+id/text"/>    <EditText        android:layout_width="match_parent"        android:layout_height="wrap_content"        android:text=""        android:id="@+id/edit"/>    <Button        android:layout_width="match_parent"        android:layout_height="wrap_content"        android:text="发送"        android:id="@+id/send"/></LinearLayout>

0 0