背景我正试图为我的java服务器创建一个android客户端应用程序,并让它们使用TCP套接字进行通信。
当我在android设备模拟器上运行我的应用程序时,它的工作原理是什么
当我在手机上运行该应用程序时,我无法正常工作,我在创建套接字时遇到连接超时。
异常 java.net.Connect异常: 无法连接到 /10.0.2.2 (端口 9111): 连接失败: ETIMEDOUT (连接超时)
服务器和移动设备连接到同一个wifi网络,我已经关闭了笔记本电脑上的防火墙(我运行服务器的地方)
这可能是造成这种情况的原因吗?,感谢任何人的帮助
服务器
public class HelpMeServer {
public final static int port=9111;
public static void main(String[] args) throws IOException {
Database db=new Database();
ServerSocket serverSocket = null;
try {
serverSocket = new ServerSocket(port);
System.out.println("Listening on port "+port);
} catch (IOException e) {
System.err.println("Could not listen on port: "+port);
System.exit(1);
}
while(true)
{
Socket clientSocket = null;
try {
clientSocket = serverSocket.accept();
ClientThread t=new ClientThread(clientSocket,db);
t.start();
} catch (IOException e) {
System.err.println("Accept failed.");
System.exit(1);
}
}
}
}
主要活动
public class LoginActivity extends Activity {
private EditText view_email;
private EditText view_password;
TextView result;
ConnectionHandler conhandler;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_login);
view_email=(EditText) findViewById(R.id.email);
view_password=(EditText) findViewById(R.id.password);
result=(TextView) findViewById(R.id.result);
}
public void login(View view)
{
String email=view_email.getText().toString();
String password=view_password.getText().toString();
ConnectionHandler c=new ConnectionHandler();
c.execute(new String[]{"login",email,password});
try {
String response=c.get();
if(response.equals("login successful"))
{
Intent i=new Intent(this,MainActivity.class);
startActivity(i);
}
result.setText(response);
} catch (InterruptedException e) {
result.setText("err");
e.printStackTrace();
} catch (ExecutionException e) {
e.printStackTrace();
result.setText("err");
}
}
}
启动套接字的异步活动
public class ConnectionHandler extends AsyncTask<String, Void, String>{
public static final String serverip = "10.0.2.2";
public static final int serverport = 9111;
Socket s;
PrintWriter out;
BufferedReader in;
@Override
protected String doInBackground(String... lines)
{
Log.i("AsyncTank", "doInBackgoung: Creating Socket");
try {
s = new Socket(serverip, serverport);
Log.i("AsyncTank", "doInBackgoung: Created Socket");
} catch (Exception e) {
Log.i("AsyncTank", "doInBackgoung: Cannot create Socket "+e.toString());
}
if (s.isConnected()) {
try {
in = new BufferedReader(new InputStreamReader(s.getInputStream()));
out = new PrintWriter(s.getOutputStream(), true);
Log.i("AsyncTank", "doInBackgoung: Socket created, Streams assigned");
} catch (IOException e) {
// TODO Auto-generated catch block
Log.i("AsyncTank", "doInBackgoung: Cannot assign Streams, Socket not connected");
e.printStackTrace();
}
} else {
Log.i("AsyncTank", "doInBackgoung: Cannot assign Streams, Socket is closed");
}
for (String line:lines)
{
writeToStream(line);
}
String result=readFromStream();
return result;
}
如果服务器在您的 PC 上运行,请尝试输入您的 PC IP 地址,而不是服务器ip = “10.0.2.2”。
我正在开发一个单例BluetoothHelper类。在connectToBTDevice()方法中,调用了一个新线程,在该线程中,蓝牙套接字试图连接到蓝牙设备。不幸的是,它开始时很好,但退出时有一个警告系统。错误如下: BluetoothHelper.java onnectToBTDevice(BluetoothDevice device)方法位于第234行。BluetoothSocket con
我试图创建群聊android应用程序和使用Websocket服务器编写的PHP。这个服务器在Web浏览器上工作得很好,但当我试图在android应用程序中使用它时,应用程序一连接就断开了。 这里是Android代码:
我有一个节点。js服务器使用socket。io和Android应用程序。我希望我的应用程序连接到服务器。(我在当地工作) 首先我启动服务器:命令提示符 以下是代码: 然后我试着从这里的活动中联系起来: 我的问题是,我从来没有在服务器上看到“一个用户连接”的日志,但我总是在android日志上看到“尝试连接”和“连接成功”。 有人能帮我解开这个谜团吗? 使现代化 我的代码工作正常,但我遇到了一些Wi
我目前正在编写一个简单的TCP聊天客户端服务器应用程序,它与套接字一起工作。客户端连接到服务器,一旦被接受,就会创建一个新的工作线程来侦听客户端输入。连接到服务器(端口8818处的localhost)工作正常,但只要工作线程在登录java.net之后开始监听更多客户端输入。SocketException:引发连接重置(请参阅下面的堆栈跟踪)。我知道,此异常的一个可能来源可能是服务器或客户端未正确或
问题内容: 我正在使用Java套接字客户端。如果服务器仍连接到我的客户端,但是它不发送对我的消息的响应,则最终会出现读取超时异常。 在那种情况下,我想测试一下是否应该重新连接我的插座,或者只是保持插座可重复使用。 我使用这种情况: 但我似乎总是重新连接。当我记录布尔属性的值时,我看到以下内容: 已连接:true已关闭:true绑定:true 如何连接和关闭? TIA 问题答案: 该主题对此主题进行
我在我的电脑上开发了一个带有python的HIDServer(蓝牙键盘)。有2个服务器套接字(psm 0x11和0x13)正在侦听连接。当我尝试将IPhone连接到计算机时,我收到了一个传入连接(如hcidump中所示),但不知何故,连接被远程主机终止。我的套接字永远无法接受客户端连接。你能帮帮我吗? hciDumps: 启动我的程序后: HCI事件:命令完成(0x0e)plen 4写入扩展查询响