040 Android TCP协议的Socket通信

1.介绍

2.使用方法

3.java后台代码

服务器server

package com.lucky.servertest;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.PrintStream;
import java.net.ServerSocket;
import java.net.Socket;

public class MyServer {
    public static final String bm="gbk"; //定义客户端和服务器通信的统一编码
    public static void main(String[] args) throws IOException {

        ServerSocket serverSocket=new ServerSocket(30003); //实例化一个服务器套接字,30003为端口号
        while (true){
            Socket socket=serverSocket.accept(); //获取套接字
            InputStream inputStream=socket.getInputStream(); //服务器socket输入流,从socket中读取数据
            OutputStream outputStream=socket.getOutputStream();//服务器socket输出流,对应数据的写操作
            BufferedReader bufferedReader=new BufferedReader(new InputStreamReader(inputStream)); //读取客户端传输过来的数据
            String str=bufferedReader.readLine();
            System.out.println(str);  //控制台输出utf-8
            PrintStream printStream=new PrintStream(outputStream);
            printStream.println(new String(("收到的消息:").getBytes(bm))+str);  //将数据传递给客户端
            //printStream.println("收到的消息:"+str);  //将数据传递给客户端
        }
    }
}

客户端手机

package com.lucky.test49socket1;

import android.os.Handler;
import android.os.Message;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.PrintStream;
import java.io.UnsupportedEncodingException;
import java.net.Socket;

public class MainActivity extends AppCompatActivity {
    EditText editText;
    TextView textView;
    Button button1;
    String stringTemp;
    String datastr;
    public static final String bm="gbk";
    //将接收到的服务器数据显示到textview
    Handler handler=new Handler(){
        @Override
        public void handleMessage(Message msg) {
            if(msg.what==0x01){
                try {
                    textView.setText("1"+new String(stringTemp.getBytes(bm)));
                } catch (UnsupportedEncodingException e) {
                    e.printStackTrace();
                }
            }
        }
    };
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        editText=findViewById(R.id.editText);
        textView=findViewById(R.id.textView2);
        button1=findViewById(R.id.button);
        button1.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                new Thread(){
                    @Override
                    public void run() {
                        try {
                            Socket socket=new Socket("192.168.228.2",30003);

                            //向服务器发送消息,socket输出流,写
                            OutputStream outputStream=socket.getOutputStream();
                            PrintStream printStream=new PrintStream(outputStream);
                            printStream.println("<-----杭州--->"+editText.getText().toString());//将数据传输到Myserver服务器

                            //接收来自服务器的消息
                            InputStream inputStream=socket.getInputStream();  //socket输入流,读
                            BufferedReader bufferedReader=new BufferedReader(new InputStreamReader(inputStream,bm));
                            stringTemp=bufferedReader.readLine();
                            handler.sendEmptyMessage(0x01);

                        } catch (IOException e) {
                            e.printStackTrace();
                        }
                    }
                }.start();
            }
        });
    }
}
原文地址:https://www.cnblogs.com/luckyplj/p/10534074.html