我有一个tcp服务器,它不是java也是它的硬件设备,我需要发送和接收数据,
我正在连接服务器并使用以下代码发送一些配置数据
this.clientSocket=new Socket("198.168.1.17",9999);
this.os=new DataOutputStream(this.clientSocket.getOutputStream());
this.in=new DataInputStream(this.clientSocket.getInputStream());
System.out.println("Conncted");
char data[]={0x03,0x03,0x00};
byte b[]=new byte[data.length];
for (int i = 0; i < b.length; i++) {
b[i] = (byte) data[i];
}
try {
os.write(b);
设备正确接收数据,现在在我的tcp客户端中我无法接收数据,尽管我在上面的代码之后编写了以下代码
int size =in.available();
byte data1[]=new byte[size];
// in.read(data1);
String str=new String(data1);
System.out.println("Reading data:"+str);
它只显示读数据,而字符串没有数据 我也试过线程中的代码
public void run(){
try{
while(true){
int size =in.available();
byte data[]=new byte[size];
in.read(data);
String str=new String(data);
System.out.println("Reading data:"+str);
}
在线程中它只显示读数据, 请帮助我如何从服务器获取数据也请注意服务器内置我无法更改服务器代码
答案 0 :(得分:0)
在(int size = in.available();“????????”
代码中可用的()方法做什么解决方案可能是: available()方法返回0,因此您无法接收数据。
答案 1 :(得分:0)
使用此代码从套接字接收数据。在onCreate之前编写此代码。
private EditText mInputMessageView;
private Emitter.Listener onNewMessage = new Emitter.Listener() {
@Override
public void call(final Object... args) {
MainActivity.this.runOnUiThread(new Runnable() {
@Override
public void run() {
JSONObject data = (JSONObject) args[0];
String username;
String message;
try {
username = data.getString("username");
message = data.getString("message");
} catch (JSONException e) {
return;
}
// add the message to view
addMessage(username, message);
}
});
}
};