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