通过单击按钮,使用套接字将文本消息从java服务器发送到android客户端
我需要通过点击按钮从核心java服务器向android客户端发送一条文本消息。但是,它不会显示错误,并且消息不会发送到客户端 服务器端按钮代码:通过单击按钮,使用套接字将文本消息从java服务器发送到android客户端,java,android,sockets,Java,Android,Sockets,我需要通过点击按钮从核心java服务器向android客户端发送一条文本消息。但是,它不会显示错误,并且消息不会发送到客户端 服务器端按钮代码: private void msg_sendActionPerformed(java.awt.event.ActionEvent evt) { // TODO add your handling code here: String msgout="";
private void msg_sendActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
String msgout="";
msgout=msg_text.getText().toString();
try{
dout.writeUTF(msgout);
//printWriter.write(msgout + "\n");
System.out.printf(msgout);
//printWriter.flush();
}catch(Exception e){
}
}
Thread r = new Thread(new Runnable() {
@Override
public void run() {
try {
s = new Socket("192.168.1.5", 1201);
// din=new DataInputStream(s.getInputStream());
inputStreamReader = new InputStreamReader(s.getInputStream());
bufferedReader = new BufferedReader(inputStreamReader);
dataout = new DataOutputStream(s.getOutputStream());
String message = "";
while (!message.equals("exit")) {
//msgin=din.readUTF();
message = bufferedReader.readLine();
msg_area.setText(msg_area.getText().toString() + "\n Server:\t" + message);
}
} catch (Exception e) {
Toast.makeText(getApplicationContext(), "Exception-->" + e.getMessage(), Toast.LENGTH_SHORT).show();
}
}
});
r.start();
客户端代码:
private void msg_sendActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
String msgout="";
msgout=msg_text.getText().toString();
try{
dout.writeUTF(msgout);
//printWriter.write(msgout + "\n");
System.out.printf(msgout);
//printWriter.flush();
}catch(Exception e){
}
}
Thread r = new Thread(new Runnable() {
@Override
public void run() {
try {
s = new Socket("192.168.1.5", 1201);
// din=new DataInputStream(s.getInputStream());
inputStreamReader = new InputStreamReader(s.getInputStream());
bufferedReader = new BufferedReader(inputStreamReader);
dataout = new DataOutputStream(s.getOutputStream());
String message = "";
while (!message.equals("exit")) {
//msgin=din.readUTF();
message = bufferedReader.readLine();
msg_area.setText(msg_area.getText().toString() + "\n Server:\t" + message);
}
} catch (Exception e) {
Toast.makeText(getApplicationContext(), "Exception-->" + e.getMessage(), Toast.LENGTH_SHORT).show();
}
}
});
r.start();
readLine()
读取行。你没有发短信。您使用的是writeUTF()
,它使用一种特殊格式,记录在Javadoc中。要么发送行,要么使用readUTF)
那么在服务器中单击一个按钮?什么类型的服务器有按钮?如果客户端试图使用.readLine()读取一行,服务器应该发送一行。但您的服务器没有。相反,它发送一个UTF字符串。msg\u area.setText()
。无法在线程运行时在textview中设置文本。Toast.makeText()
。您不能在线程的run()中显示toast。该服务器是netbeans上的java服务器(如果我理解您的问题的话),实际上我两个都试过了。。。我认为阅读线程不能与ui线程一起工作