Java Socket Android客户端
我在Java上做了一个TCP客户端,工作正常,但是当我将这个类导入到我的Android项目中时,它就不工作了 Android代码:Java Socket Android客户端,java,android,sockets,client,Java,Android,Sockets,Client,我在Java上做了一个TCP客户端,工作正常,但是当我将这个类导入到我的Android项目中时,它就不工作了 Android代码: // ... @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Button button = (Button)
// ...
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button button = (Button) findViewById(R.id.SEND);
ssid = (EditText) findViewById(R.id.textSsid);
pass = (EditText) findViewById(R.id.textPass);
debugText = (EditText) findViewById(R.id.debugText);
cliente = new ClienteTCP();
debugText.setText("Version 1-prealpha");
button.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
// Do something in response to button click
demo(v);
}
});
}
public void demo(View view) {
cliente.configure(ssid.getText(), pass.getText());
CharSequence cs = cliente.sendMessage("Hola Mundo");
if ( cs != null)
debugText.setText(cs);
else
debugText.setText("ERROR OCURRED");
}
// ...
我总是收到“出错”的消息,我尝试使用另一个IP,但它们在Java上都可以正常工作,在android上则不行
类别代码:
private CharSequence SSID, pass;
private String HOST = "52.28.45.92"; // My external server i tried with localhot server too ...
// of course i have a server aplication running hahaha
private int PORT = 5000;
private Socket s;
private DataOutputStream oms;
// ...
public CharSequence sendMessage(String ms) {
DataInputStream ims;
CharSequence data = null;
try {
s = new Socket(HOST,PORT);
oms = new DataOutputStream(s.getOutputStream());
ims = new DataInputStream(s.getInputStream());
oms.writeUTF(ms+getFull());
data = ims.readUTF();
oms.close();
ims.close();
s.close();
} catch (IOException e) {
e.printStackTrace();
}
return data;
}
我想这可能是因为我的模拟器,有什么想法吗?代码错了吗
编辑:服务器代码:
# ...
# Wrote on Python:
while 1:
data = conn.recv(BUFFER_SIZE)
if not data: break
print "received data:", data
conn.send(data+'\r\n')
conn.close()
两件事:1。您应该在与Main不同的线程上运行
public void demo(视图)
。2您可以发布日志错误吗?没有错误,只是cs总是为空。DataInputStream
readUTF()
方法与readLine()
不同,这里有更多Python程序发送的数据无法使用readUTF()读取
method。为什么在我的Java项目中阅读它:有什么区别?返回data==null,然后说发生了错误。但是你会有一个陷阱:catch(IOE例外)
。因此,您已经在打印堆栈跟踪,但也可以记录e.getMessage()以查看异常的原因。或者返回e.getMessage()直接查看它。