final Thread socketthread = new Thread(new Runnable() {
@Override
public void run() {
Socket socket = null;
//创建socket
try {
socket = new Socket("192.168.1.1", 8000);//ip+端口号
System.out.println("socket连接成功");
//向服务器端发送消息
OutputStream socketWriter = socket.getOutputStream();
System.out.println("开始发送");
socketWriter.write(msg);
socketWriter.flush();
System.out.println("发送完毕,开始接收信息");
//接收来自服务器端的消息
InputStream socketReader = socket.getInputStream();
byte strRxBuf[] = new byte[6];
int len = socketReader.read(strRxBuf, 0, 6);
if (len != 0) {
System.out.println("发送成功");
isSuccessful = true;
} else {
System.out.println("没有收到消息");
isSuccessful = false;
}
//关闭流
socketWriter.close();
socketReader.close();
//关闭Socket
socket.close();
} catch (IOException e) {
e.printStackTrace();
}
}
});
socketthread.start();
在连接正常的情况下,服务器收到消息后会立即返回一些数据。如果能收到这些数据就表示服务器确实收到了数据。
要发送向服务器发送十六字节的数据可以采用以下的方式:
1.数据类型是byte型:
private byte[] msg = new byte[5];
2.给数据赋值:
msg[0] = (byte) 0xaa;
msg[1] = (byte) 0xdd;
msg[2] = (byte) 0x1c;
msg[3] = (byte) 0x52;
msg[4] = (byte) 0xff;
3.在socket中使用write的方式:
OutputStream socketWriter = socket.getOutputStream();
socketWriter.write(msg);
socketWriter.flush();