版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_34379916/article/details/78661441
package com.example.testtcp;
import java.io.DataInputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.net.Socket;
import java.net.UnknownHostException;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
public class MainActivity extends Activity {
EditText editText;
Button button;
Socket socket;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
editText = findViewById(R.id.edit);
button = findViewById(R.id.button);
try {
socket = new Socket("192.168.2.227", 2023);
// 设置10秒之后即认为是超时
socket.setSoTimeout(10000);
} catch (Exception e) {
e.printStackTrace();
}
button.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
new Thread(new Runnable() {
@Override
public void run() {
Send(editText.getText().toString());
}
}).start();
}
});
}
private void Send(String s) {
try {
// 发送数据给服务端
OutputStream outputStream = socket.getOutputStream();
outputStream.write(s.getBytes("gb2312"));
// socket.shutdownOutput();
// 等待服务器发送数据,读取数据(超时异常)
DataInputStream br = new DataInputStream(socket.getInputStream());
byte[] b = new byte[1024];
int length = br.read(b);
String Msg = new String(b, 0, length, "gb2312");
System.out.println(Msg + " 接收到服务器的数据");
} catch (UnknownHostException e) {
System.out.println("UnknownHost 来自服务器的数据");
e.printStackTrace();
} catch (IOException e) {
System.out.println("IOException 来自服务器的数据");
e.printStackTrace();
}
}
@Override
protected void onDestroy() {
try {
socket.shutdownOutput();
} catch (IOException e) {
e.printStackTrace();
}
super.onDestroy();
}
}
由于要和别人的客控系统做对接,他们使用的是TCP协议,我发送,他返回,注意设置超时