package com.xiaoxiao9575.socketapplication;
import android.annotation.SuppressLint;
import android.os.AsyncTask;
import android.os.Handler;
import android.os.Message;
import android.support.v7.app.AppCompatActivity;
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.BufferedReader;
import java.io.BufferedWriter;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.net.InetSocketAddress;
import java.net.Socket;
import java.net.SocketTimeoutException;
public class ClientActivity extends AppCompatActivity {
private EditText et_ip;
private EditText et_msg;
private TextView tv_send;
private TextView tv_confirm;
private Socket mSocket;
private OutputStream mOutStream;
private InputStream mInStream;
private SocketConnectThread socketConnectThread;
private StringBuffer sb = new StringBuffer();
@SuppressLint("HandlerLeak")
public Handler handler = new Handler(){
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
if (msg.what == 1){
Bundle data = msg.getData();
sb.append(data.getString("msg"));
sb.append("\n");
tv_msg.setText(sb.toString());
}
}
};
private TextView tv_msg;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_client);
socketConnectThread = new SocketConnectThread();
initView();
setListener();
}
private void initView() {
et_ip = (EditText) findViewById(R.id.et_ip);
et_msg = (EditText) findViewById(R.id.et_msg);
tv_send = (TextView) findViewById(R.id.tv_send);
tv_confirm = (TextView) findViewById(R.id.tv_confirm);
tv_msg = (TextView) findViewById(R.id.tv_msg);
}
private void setListener() {
tv_send.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
send(et_msg.getText().toString());
}
});
tv_confirm.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
socketConnectThread.start();
}
});
}
class SocketConnectThread extends Thread{
public void run(){
Log.e("info", "run: ============线程启动" );
try {
//指定ip地址和端口号
mSocket = new Socket(et_ip.getText().toString(), 1989);
if(mSocket != null){
//获取输出流、输入流
mOutStream = mSocket.getOutputStream();
mInStream = mSocket.getInputStream();
}else {
Log.e("info", "run: =========scoket==null");
}
} catch (Exception e) {
e.printStackTrace();
return;
}
Log.e("info","connect success========================================");
startReader(mSocket);
}
}
public void send(final String str) {
if (str.length() == 0){
return;
}
new Thread() {
@Override
public void run() {
try {
// socket.getInputStream()
DataOutputStream writer = new DataOutputStream(mSocket.getOutputStream());
writer.writeUTF(str); // 写一个UTF-8的信息
System.out.println("发送消息");
} catch (IOException e) {
e.printStackTrace();
}
}
}.start();
}
/**
* 从参数的Socket里获取最新的消息
*/
private void startReader(final Socket socket) {
new Thread(){
@Override
public void run() {
DataInputStream reader;
try {
// 获取读取流
reader = new DataInputStream(socket.getInputStream());
while (true) {
System.out.println("*等待客户端输入*");
// 读取数据
String msg = reader.readUTF();
System.out.println("获取到客户端的信息:=" + msg);
Message message = new Message();
message.what = 1;
Bundle bundle = new Bundle();
bundle.putString("msg", msg);
message.setData(bundle);
handler.sendMessage(message);
}
} catch (IOException e) {
e.printStackTrace();
}
}
}.start();
}
}
没有合适的资源?快使用搜索试试~ 我知道了~
资源详情
资源评论
资源推荐
收起资源包目录
SocketApplication.zip (43个子文件)
SocketApplication
gradlew 5KB
settings.gradle 16B
SocketApplication.iml 894B
gradle
wrapper
gradle-wrapper.properties 236B
gradle-wrapper.jar 52KB
local.properties 456B
gradlew.bat 2KB
gradle.properties 747B
.gitignore 127B
app
src
androidTest
java
com
xiaoxiao9575
socketapplication
ExampleInstrumentedTest.java 795B
test
java
com
xiaoxiao9575
socketapplication
ExampleUnitTest.java 428B
main
AndroidManifest.xml 1KB
res
mipmap-hdpi
ic_launcher.png 3KB
ic_launcher_round.png 5KB
mipmap-xxxhdpi
ic_launcher.png 9KB
ic_launcher_round.png 15KB
mipmap-xhdpi
ic_launcher.png 4KB
ic_launcher_round.png 7KB
mipmap-anydpi-v26
ic_launcher.xml 276B
ic_launcher_round.xml 276B
mipmap-mdpi
ic_launcher.png 2KB
ic_launcher_round.png 3KB
drawable
ic_launcher_background.xml 6KB
layout
activity_client.xml 1KB
activity_main.xml 1KB
activity_service.xml 2KB
drawable-v24
ic_launcher_foreground.xml 2KB
values
colors.xml 214B
strings.xml 83B
styles.xml 394B
mipmap-xxhdpi
ic_launcher.png 6KB
ic_launcher_round.png 10KB
java
com
xiaoxiao9575
socketapplication
NetWorkUtil.java 3KB
ServiceActivity.java 5KB
ClientActivity.java 5KB
MainActivity.java 1KB
release
app-release.apk 1.48MB
output.json 206B
libs
app.iml 11KB
.gitignore 8B
build.gradle 967B
proguard-rules.pro 772B
build.gradle 573B
共 43 条
- 1
小小9575
- 粉丝: 64
- 资源: 3
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论2