Java 简单Android TCP客户端超时
您好:我正在编写一个简单的android TCP客户端,用于Inventek嵌入式TCP服务器(带有DHCP)。此客户端发送短消息多次,然后停止 我能够找到并获得从服务器网络分配的DHCP地址(服务器调试显示了这一点)。嵌入式Inventek服务器与“TCP Telnet终端”应用程序配合使用 注意,我的Android手机在WiFi网络图标旁边显示一个感叹号,但显示它已连接,我认为这不是问题所在,因为我确实收到了DHCP地址 当我运行代码时,我收到以下消息。 android调试中的~~SocketTimeoutException。以及以下各项: 这是调试过程:Java 简单Android TCP客户端超时,java,android,tcp,Java,Android,Tcp,您好:我正在编写一个简单的android TCP客户端,用于Inventek嵌入式TCP服务器(带有DHCP)。此客户端发送短消息多次,然后停止 我能够找到并获得从服务器网络分配的DHCP地址(服务器调试显示了这一点)。嵌入式Inventek服务器与“TCP Telnet终端”应用程序配合使用 注意,我的Android手机在WiFi网络图标旁边显示一个感叹号,但显示它已连接,我认为这不是问题所在,因为我确实收到了DHCP地址 当我运行代码时,我收到以下消息。 android调试中的~~Socke
08-16 17:07:46.614 14378-14426/? W/System.err: java.net.SocketTimeoutException: failed to connect to /192.168.10.1 (port 5024) after 1000ms
at libcore.io.IoBridge.connectErrno(IoBridge.java:169)
at libcore.io.IoBridge.connect(IoBridge.java:122)
at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:183) at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:456) at java.net.Socket.connect(Socket.java:882)
at com.example.tony.escomms.ClientLoop.run(TcpClient.java:47)
at java.lang.Thread.run(Thread.java:818)
守则:
package com.example.tony.escomms;
import android.util.Log;
import java.io.DataOutputStream;
import java.net.InetSocketAddress
import java.net.Socket;
public class TcpClient {
private static String LOG_TAG = "TcpClient";
public TcpClient() {
ClientLoop cl = new ClientLoop("Hi");
}
}
class ClientLoop implements Runnable {
private static String LOG_TAG = "ClientLoop";
String message;
public ClientLoop(String message) {
this.message = message;
try {
new Thread(this).start();
} catch (Exception e) {
Log.i(LOG_TAG, "Error: Calling Task");
e.printStackTrace();
}
}
public void run() {
Log.i(LOG_TAG, "Connecting...");
try {
Socket socket = new Socket();
if (socket == null){
Log.i(LOG_TAG, "socket is null");
return;
}
socket.connect(new InetSocketAddress("192.168.10.1", 5024), 1000);
DataOutputStream toServer = new DataOutputStream(socket.getOutputStream());
if (toServer == null) {
Log.i(LOG_TAG, "data stream is null");
return;
}
for (int i = 0; i < 100; i++) {
toServer.writeBytes(message + 'n');
Log.i(LOG_TAG, "Sending " + message);
}
} catch (Exception e) {
Log.i(LOG_TAG, "Error: Comm fault ");
e.printStackTrace();
}
}
}
package com.example.tony.escomms;
导入android.util.Log;
导入java.io.DataOutputStream;
导入java.net.InetSocketAddress
导入java.net.Socket;
公共类TcpClient{
私有静态字符串LOG_TAG=“TcpClient”;
公共TcpClient(){
ClientLoop cl=新ClientLoop(“Hi”);
}
}
类ClientLoop实现Runnable{
私有静态字符串LOG_TAG=“ClientLoop”;
字符串消息;
公共ClientLoop(字符串消息){
this.message=消息;
试一试{
新线程(this.start();
}捕获(例外e){
Log.i(Log_标记,“错误:调用任务”);
e、 printStackTrace();
}
}
公开募捐{
Log.i(Log_标签,“连接…”);
试一试{
套接字=新套接字();
if(套接字==null){
Log.i(Log_标记,“套接字为空”);
返回;
}
socket.connect(新的InetSocketAddress(“192.168.10.1”,5024),1000);
DataOutputStream toServer=新的DataOutputStream(socket.getOutputStream());
if(toServer==null){
Log.i(Log_标记,“数据流为空”);
返回;
}
对于(int i=0;i<100;i++){
toServer.writeBytes(消息+'n');
Log.i(日志标签,“发送”+消息);
}
}捕获(例外e){
Log.i(Log_标签,“错误:通信故障”);
e、 printStackTrace();
}
}
}
您是否设法从计算机上使用常规telnet进行连接?这似乎只是一个连接问题,与android无关sdk@AlessandroOliveira. 是的,我可以从Linux计算机远程登录到它。