我有一个服务器客户端连接,我正在尝试读取服务器发送的消息。我可以向服务器发送消息,但是当我尝试在我的应用中读取消息时,我不知道如何读取该消息。 我的服务器是ESP8266模块。
我可以通过此模块发送消息,但我不知道如何在Main3Activity中读取该消息。
这是我正在使用的代码:
func collectionView(_ collectionView: UICollectionView,
viewForSupplementaryElementOfKind kind: String,
at indexPath: IndexPath) -> UICollectionReusableView {
let headerView = collectionView.dequeueReusableSupplementaryView(ofKind: UICollectionElementKindSectionHeader,
withReuseIdentifier: "headerView", for: indexPath) as! HeaderView
headerView.delegate = self
return headerView
}
这是我的TCPClient类
public class Main3Activity extends AppCompatActivity {
public static String data = " ";
Socket client;
SocketAddress socketAddress;
OutputStream outputStream;
String ServerIP = "192.168.1.1";
int ServerPort = 8888;
String message;
public final static String msg = null;
public int i;
EditText et_ServerIP, et_ServerPort;
TextView tv_DataSendRecive, info;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main3);
tv_DataSendRecive = (TextView) findViewById(R.id.tv_DataSendRecive);
info = (TextView) findViewById(R.id.info);
et_ServerIP = (EditText) findViewById(R.id.et_ServerIP);
et_ServerPort = (EditText) findViewById(R.id.et_ServerPort);
}
public void onClick_btn_Send(View v) {
switch (v.getId()) {
case R.id.led_2:
message = "2 led\n";
break;
case R.id.led_1:
message = "1 led\n";
break;
case R.id.led_4:
message = "4 led\n";
break;
case R.id.led_3:
message = "3 led\n";
break;
case R.id.led_6:
message = "6 led\n";
break;
case R.id.led_5:
message = "5 led\n";
break;
case R.id.led_8:
message = "8 led\n";
break;
case R.id.led_7:
message = "7 led\n";
default:
return;
}
tv_DataSendRecive.append(" " + message);
new Thread(new Runnable() {
@Override
public void run() {
try {
ServerIP = et_ServerIP.getText().toString();
ServerPort = Integer.parseInt(et_ServerPort.getText().toString());
if (i == 0) {
socketAddress = new InetSocketAddress(ServerIP, ServerPort);
client = new Socket();
try {
client.connect(socketAddress);
} catch (IOException e1) {
e1.printStackTrace();
}
i = 1;
}
if (client.isConnected()) {
// ShowToast( "Client is Connected." );
try {
outputStream = client.getOutputStream();
} catch (IOException e1) {
e1.printStackTrace();
}
byte[] bytes = message.getBytes();
try {
outputStream.write(bytes);
} catch (IOException e1) {
e1.printStackTrace();
}
try {
outputStream.flush();
} catch (IOException e1) {
e1.printStackTrace();
}
///////// outputStream.close();\\\\\\\\\\\\\\\\\\\\\
} else {
ShowToast("Client is Not Connected.");
}
//////////////////// client.close(); \\\\\\\\\\\\\\\\\\\
} catch (final Exception e) {
ShowToast(e.toString());
}
}
}).start();
}
public void ShowToast(final String Data) {
runOnUiThread(new Runnable() {
public void run() {
Toast.makeText(getApplicationContext(), Data, Toast.LENGTH_LONG).show();
}
});
}
}