1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > 安卓应用开发Socket通信 客户端+服务器端

安卓应用开发Socket通信 客户端+服务器端

时间:2022-09-16 18:58:05

相关推荐

安卓应用开发Socket通信 客户端+服务器端

安卓应用开发Socket通信 客户端+服务器端

1. 添加网络权限

<uses-permission android:name="android.permission.INTERNET" />

2. 布局代码

<?xml version="1.0" encoding="utf-8"?><androidx.constraintlayout.widget.ConstraintLayout xmlns:android="/apk/res/android"xmlns:app="/apk/res-auto"xmlns:tools="/tools"android:layout_width="match_parent"android:layout_height="match_parent"tools:context=".MainActivity"><Buttonandroid:id="@+id/connect"android:layout_width="104dp"android:layout_height="48dp"android:layout_marginTop="84dp"android:layout_marginEnd="6dp"android:text="连接"app:backgroundTint="#940327ED"app:layout_constraintEnd_toEndOf="parent"app:layout_constraintTop_toTopOf="parent" /><Buttonandroid:id="@+id/send"android:layout_width="102dp"android:layout_height="50dp"android:layout_marginTop="150dp"android:layout_marginEnd="6dp"android:text="发送"app:backgroundTint="#850027FF"app:layout_constraintEnd_toEndOf="parent"app:layout_constraintTop_toTopOf="parent" /><EditTextandroid:id="@+id/send_text"android:layout_width="291dp"android:layout_height="57dp"android:layout_marginStart="2dp"android:layout_marginTop="144dp"android:ems="10"android:inputType="textPersonName"android:text="聊天内容"app:layout_constraintStart_toStartOf="parent"app:layout_constraintTop_toTopOf="parent" /><EditTextandroid:id="@+id/tcp_ip"android:layout_width="181dp"android:layout_height="56dp"android:layout_marginStart="2dp"android:layout_marginTop="76dp"android:ems="10"android:inputType="textPersonName"android:text="192.168.1.1"app:layout_constraintStart_toStartOf="parent"app:layout_constraintTop_toTopOf="parent" /><EditTextandroid:id="@+id/tcp_port"android:layout_width="91dp"android:layout_height="56dp"android:layout_marginTop="76dp"android:layout_marginEnd="128dp"android:ems="10"android:inputType="number"android:text="8700"app:layout_constraintEnd_toEndOf="parent"app:layout_constraintTop_toTopOf="parent" /><TextViewandroid:id="@+id/Recv_text"android:layout_width="match_parent"android:layout_height="251dp"android:layout_marginStart="2dp"android:layout_marginEnd="2dp"android:layout_marginBottom="240dp"android:background="#811B99D3"android:text="聊天内容"android:textAlignment="center"android:textColor="#D900FF"android:textSize="16sp"android:textStyle="bold"app:layout_constraintBottom_toBottomOf="parent"app:layout_constraintEnd_toEndOf="parent"app:layout_constraintHorizontal_bias="0.0"app:layout_constraintStart_toStartOf="parent" /><TextViewandroid:id="@+id/textView"android:layout_width="152dp"android:layout_height="38dp"android:layout_marginTop="16dp"android:layout_marginEnd="140dp"android:text="客户端"android:textAlignment="center"android:textSize="24sp"app:layout_constraintEnd_toEndOf="parent"app:layout_constraintTop_toTopOf="parent" /></androidx.constraintlayout.widget.ConstraintLayout>

3. 主代码

声明控件

private EditText tcp_port;//端口private EditText tcp_ip;//ip地址public TextView sendtext;//发送文本private TextView Recv_text;//接收文本private ConnectThread connectThread;//声明连接内部类

绑定控件

Button connect=findViewById(R.id.connect);Button send=findViewById(R.id.send);tcp_port=findViewById(R.id.tcp_port);tcp_ip=findViewById(R.id.tcp_ip);Recv_text=findViewById(R.id.Recv_text);sendtext=findViewById(R.id.send_text);

完整代码

import androidx.appcompat.app.AppCompatActivity;import android.graphics.Color;import android.os.Bundle;import android.util.Log;import android.view.View;import android.widget.Button;import android.widget.EditText;import android.widget.TextView;import android.widget.Toast;import java.io.IOException;import java.io.InputStream;import java.io.OutputStream;import .InetAddress;import .Socket;public class MainActivity extends AppCompatActivity {private EditText tcp_port;private EditText tcp_ip;public TextView sendtext;private TextView Recv_text;private ConnectThread connectThread;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);Button connect=findViewById(R.id.connect);connect.setText("连接");Button send=findViewById(R.id.send);tcp_port=findViewById(R.id.tcp_port);tcp_ip=findViewById(R.id.tcp_ip);Recv_text=findViewById(R.id.Recv_text);sendtext=findViewById(R.id.send_text);connect.setOnClickListener(new View.OnClickListener() {public void onClick(View v) {connectThread = new ConnectThread();connectThread.start();connect.setText("已连接");connect.setBackgroundColor(Color.parseColor("#00ff00"));}});send.setOnClickListener(new View.OnClickListener() {public void onClick(View v) {//发送数据if (connectThread.socket != null) {new Thread(new Runnable() {@Overridepublic void run() {try {connectThread.outputStream.write(sendtext.getText().toString().getBytes());} catch (IOException e) {e.printStackTrace();}}}).start();}}});}class ConnectThread extends Thread {Socket socket = null; //定义socketOutputStream outputStream = null; //定义输出流(发送)InputStream inputStream = null; //定义输入流(接收)public void run() {try {//用InetAddress方法获取ip地址InetAddress ipAddress = InetAddress.getByName(tcp_ip.getText().toString());int port = Integer.valueOf(tcp_port.getText().toString()); //获取端口号socket = new Socket(ipAddress, port);Log.e("Socket", socket.toString());//连接失败if (null == socket) {runOnUiThread(new Runnable() {@Overridepublic void run() {Toast.makeText(getApplicationContext(), "连接失败", Toast.LENGTH_SHORT).show();}});return;}//获取输出流outputStream = socket.getOutputStream();//接收数据while (true) {final byte[] buffer = new byte[1024];//创建接收缓冲区inputStream = socket.getInputStream();final int len = inputStream.read(buffer);//数据读出来,并且返回数据的长度if (len != 0) {runOnUiThread(new Runnable() {@Overridepublic void run() {Recv_text.setText("");Recv_text.append(new String(buffer, 0, len) + "\r\n");}});}}} catch (IOException e) {e.printStackTrace();}}}}

1. 添加网络权限

<uses-permission android:name="android.permission.INTERNET" />

2. 布局代码

<Buttonandroid:id="@+id/listen"android:layout_width="104dp"android:layout_height="48dp"android:layout_marginTop="84dp"android:layout_marginEnd="6dp"android:text="开始监听"app:backgroundTint="#940327ED"app:layout_constraintEnd_toEndOf="parent"app:layout_constraintTop_toTopOf="parent" /><Buttonandroid:id="@+id/send"android:layout_width="102dp"android:layout_height="50dp"android:layout_marginTop="150dp"android:layout_marginEnd="6dp"android:text="发送"app:backgroundTint="#850027FF"app:layout_constraintEnd_toEndOf="parent"app:layout_constraintTop_toTopOf="parent" /><EditTextandroid:id="@+id/send_text"android:layout_width="291dp"android:layout_height="57dp"android:layout_marginStart="2dp"android:layout_marginTop="144dp"android:ems="10"android:inputType="textPersonName"android:text="聊天内容"app:layout_constraintStart_toStartOf="parent"app:layout_constraintTop_toTopOf="parent" /><EditTextandroid:id="@+id/tcp_port"android:layout_width="91dp"android:layout_height="56dp"android:layout_marginTop="76dp"android:layout_marginEnd="128dp"android:ems="10"android:inputType="number"android:text="8700"android:textSize="20sp"app:layout_constraintEnd_toEndOf="parent"app:layout_constraintTop_toTopOf="parent" /><TextViewandroid:id="@+id/Recv_text"android:layout_width="match_parent"android:layout_height="251dp"android:layout_marginStart="2dp"android:layout_marginEnd="2dp"android:layout_marginBottom="188dp"android:background="#811B99D3"android:text="聊天内容"android:textAlignment="center"android:textColor="#D900FF"android:textSize="16sp"android:textStyle="bold"app:layout_constraintBottom_toBottomOf="parent"app:layout_constraintEnd_toEndOf="parent"app:layout_constraintHorizontal_bias="1.0"app:layout_constraintStart_toStartOf="parent" /><TextViewandroid:id="@+id/textView"android:layout_width="152dp"android:layout_height="38dp"android:layout_marginTop="16dp"android:layout_marginEnd="140dp"android:text="服务器端"android:textAlignment="center"android:textSize="24sp"app:layout_constraintEnd_toEndOf="parent"app:layout_constraintTop_toTopOf="parent" /><TextViewandroid:id="@+id/textView2"android:layout_width="171dp"android:layout_height="47dp"android:layout_marginTop="84dp"android:layout_marginEnd="16dp"android:text="设置端口:"android:textSize="24sp"android:textStyle="bold"app:layout_constraintEnd_toStartOf="@+id/tcp_port"app:layout_constraintTop_toTopOf="parent" />

3. 主代码

声明控件

private EditText tcp_port;//端口public TextView sendtext;//发送文本private TextView Recv_text;//接收文本private ConnectThread listenThread;//声明监听内部类

绑定控件

Button listen=findViewById(R.id.listen);listen.setText("开启监听");Button send=findViewById(R.id.send);tcp_port=findViewById(R.id.tcp_port);Recv_text=findViewById(R.id.Recv_text);sendtext=findViewById(R.id.send_text);

完整代码

import androidx.appcompat.app.AppCompatActivity;import android.graphics.Color;import android.os.Bundle;import android.view.View;import android.widget.Button;import android.widget.EditText;import android.widget.TextView;import java.io.IOException;import java.io.InputStream;import java.io.OutputStream;import .ServerSocket;import .Socket;public class MainActivity extends AppCompatActivity {private EditText tcp_port;public TextView sendtext;private TextView Recv_text;private ListenTheard listenTheard;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);Button listen=findViewById(R.id.listen);listen.setText("开启监听");Button send=findViewById(R.id.send);tcp_port=findViewById(R.id.tcp_port);Recv_text=findViewById(R.id.Recv_text);sendtext=findViewById(R.id.send_text);listen.setOnClickListener(new View.OnClickListener() {public void onClick(View v) {listenTheard = new ListenTheard();listenTheard.start();listen.setText("已打开监听");listen.setBackgroundColor(Color.parseColor("#00ff00"));}});send.setOnClickListener(new View.OnClickListener() {public void onClick(View v) {//发送数据if (listenTheard.socket != null) {new Thread(new Runnable() {@Overridepublic void run() {try {listenTheard.outputStream.write(sendtext.getText().toString().getBytes());} catch (IOException e) {e.printStackTrace();}}}).start();}}});}class ListenTheard extends Thread{ServerSocket socket = null;OutputStream outputStream;InputStream in;public void run(){try{int port=Integer.valueOf(tcp_port.getText().toString());socket=new ServerSocket(port);Socket s=socket.accept();outputStream=s.getOutputStream();while(true){final byte[] buffer = new byte[1024];//创建接收缓冲区in=s.getInputStream();final int len = in.read(buffer);//数据读出来,并且返回数据的长度String S=new String(buffer,0,len);String[] D=S.split(",");if (len != 0) {runOnUiThread(new Runnable() {@Overridepublic void run() {Recv_text.setText("");Recv_text.append(new String(buffer,0,len));}});}}}catch (Exception e){e.printStackTrace();}}}}

各位精英,这里就是基础的网络通信,不喜欢可以不看,不要喷哈,有问题私信我

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。