- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我尝试使用套接字创建客户端-服务器应用程序。我已经成功地使用 AVD 做到了这一点,并在我的电脑上运行服务器和客户端。但是当我尝试让它在我的设备上的同一个 Wifi 网络中工作时,应用程序崩溃了。
是的,我使用单独的线程进行连接并已将互联网的使用添加到 list 中。
这是一些代码...
客户端线程:
package com.mainlauncher;
import java.io.*;
import java.net.*;
public class ConnectionThread extends Thread {
private static final int SERVERPORT = 7777;
private static final String SERVERADDRESS = "My-PC";
private Socket socket;
private DataInputStream in;
private DataOutputStream out;
@Override
public void run() {
super.run();
open();
close();
}
void open(){
try{
socket = new Socket(SERVERADDRESS,SERVERPORT);
in = new DataInputStream(socket.getInputStream());
out = new DataOutputStream(socket.getOutputStream());
}
catch(IOException e){}
}
void close(){
try {
if(in!=null)
in.close();
if(out!=null)
out.close();
if(socket!=null)
socket.close();
}
catch (IOException e) {}
socket=null;
}
}
服务器端主要:
import java.io.IOException;
import java.net.*;
public class Main {
public static void main(String[] args) {
int port = 7777;
new Main().handleClients(port);
}
private void handleClients(int port) {
ServerSocket serverSocket = null;
try{
serverSocket = new ServerSocket(port);
System.out.println("Server is ready...");
for(int i=1; ; i++){
Socket socket = serverSocket.accept();
ServerThread thread = new ServerThread(i,socket);
System.out.println(i + " Connected");
thread.run();
}
}
catch (Exception e){
System.err.println(e.getMessage());
}
finally{
if(serverSocket != null){
try{ serverSocket.close(); }
catch(IOException x){}
}
}
}
}
和服务器线程:
import java.io.*;
import java.net.*;
public class ServerThread extends Thread {
private int serverIndex;
private Socket socket;
private DataOutputStream out;
private DataInputStream in;
public ServerThread (int serverIndex, Socket socket){
this.serverIndex = serverIndex;
this.socket = socket;
}
@Override
public void run() {
super.run();
try {
in = new DataInputStream(socket.getInputStream());
out = new DataOutputStream(socket.getOutputStream());
} catch (IOException e) {
System.out.println(serverIndex + " Disconnected");
}
finally{
try {
in.close();
out.close();
socket.close();
} catch (IOException e) {}
}
}
}
我尝试在这里寻找答案\谷歌等...没有任何帮助。我的电脑上没有防火墙或任何东西来阻止传入连接。
有人有什么想法吗?
谢谢,利奥兹
最佳答案
这不会立即解决您的问题,但您有一些错误导致您的程序丢弃真正问题的证据。
1) 这只是简单地压制了异常,丢弃了它曾经发生过的所有证据。
catch(IOException e){}
2)这好一点,但它只打印出异常消息......而不是堆栈跟踪。
catch (Exception e){
System.err.println(e.getMessage());
}
2) 的另一个问题是它捕获所有异常...而不仅仅是 IOException。其中包括未经检查的异常,例如 NullPointerException
、SecurityException
等。
异常应该这样诊断:
catch (IOException e){
e.printStackTrace();
}
或已记录。
<小时/>最后,您处理请求的方式是错误的:
Socket socket = serverSocket.accept();
ServerThread thread = new ServerThread(i,socket);
System.out.println(i + " Connected");
thread.run();
错误出现在最后一个语句中。它实际上所做的只是简单地在当前线程中调用 thread
对象的 run()
方法...。要在不同的线程中运行 run()
方法,您需要调用 start
方法。像这样:
Socket socket = serverSocket.accept();
ServerThread thread = new ServerThread(i,socket);
System.out.println(i + " Connected");
thread.start();
关于java - android 打开套接字在设备上崩溃,适用于 AVD,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13100700/
我在我的 Ubuntu 中使用 android sdk 已经有一段时间了。最近,我将它升级到 Ubuntu 13.10。从那时起,每当我尝试启动 android 虚拟设备时,我都会收到此错误: Sta
当我转到项目的运行/调试配置时,我不断收到此错误。 如果我单击“确定”,错误会再次出现,并且会不断出现。我无能为力。 最佳答案 尝试以管理员身份运行Android Studio 关于android -
我在 StackOverflow 上搜索了这里,发现许多类似的问题有许多不同的答案,但没有一个对我有用。 因此,在我尝试使用 Google Play API 添加新的虚拟设备之前,我在最后几天很好地使
我在使用运行 4.0.3 操作系统的 HTC One V 开发我的应用程序时遇到了一个非常奇怪的问题。现在,该应用程序在我的和其他一些随机的 2.2、2.3 和 4+ 设备上运行良好,但在某些设备上,
在 AVD 管理器 gui 中,我看到了设备定义列表,这些使得使用给定设置配置设备变得容易。 当我使用 android list targets 时,我从设备定义中得到了一组不同的结果。 是否可以通过
出于某种原因,我无法创建 AVD。我经历了AVD Manager - Cannot Create Android Virtual Device并尝试了解决方案,我还在管理器中调整了不同的设置,包括将名
尝试将名为 AVD 的“2.3”添加到运行配置时出现上述错误。尽管如此,它的创建工作完美无缺。在多个目标上尝试过,见下文: 适用于: L 预览 4.4 不适用于: 2.3.3 4.1.2 4.3 使用
我在 Ubuntu 中使用 Android Studio,它不会创建 AVD。我的 ~/.android/avd 目录中没有创建任何内容。相反,在我的/root 目录中创建了一些东西。我想我不会关心,
我一直在使用 Android 11 AVD 毫无问题地开发和测试我的应用。现在我想测试 Android 12 并使用 Android 12 图像创建一个新的 AVD。但是当我启动 AVD 时,它会生成
无法在模拟器中启动 AVD。输出:sh:1:glxinfo:未找到无法启动'.../sdk/tools/qemu/linux-x86/qem u-system-i386':没有那个文件或目录 最佳答案
我正在运行最新的 beta Android Studio 4.2 Beta 3。每次我尝试单击运行按钮来启动我的 AVD 时,AVD 都不会启动并且会导致 Android Studio 崩溃。我没有安
当尝试使用 Android SDK AVD 管理器创建 AVD 时,出现“错误:空”。这种情况不断发生,因为 SDK 管理器正在寻找“位于\...(错误位置)的现有 Android 虚拟设备列表”。如
自从上次在我的 Mac OSX 上更新 Android Studio (0.8.14) 后,AVD Manager 无法再创建 AVD。 它只是在这个过程中崩溃了。有什么想法吗? 最佳答案 使用命令行
我正在尝试设置 Android 模拟器以使用 Cordova。我安装了我需要的一切,Android SDK 工具 (25.2.5)、Android SDK 构建工具 (25.*) 和 Android
我在 OS X Yosemite 上运行 Android Studio。我试图简单地从 Android Studio AVD Manager 中删除一个 AVD。每次我尝试删除它时,我都会收到消息“选
我正在使用带有 Android 4.4.2 API 级别 19 皮肤 WVGA800 的 Android 模拟器,当我按下 Left Ctrol+F11 时,AVD 配置从 Portait 更改为 L
我需要有关新虚拟设备的 AVD 设置方面的帮助。 我需要与新三星 Galaxy S3 大小相同的 AVD 的设置。 最佳答案 我创建了一个基于 GSM 竞技场状态 (http://www.gsmare
我已经创建了一个 Android 模拟器(Android 虚拟设备),但是我无法找到我在创建此模拟器时构建的 SD 卡。 如何找到 SD 卡及其内容以及如何将 APK 文件安装到 AVD? 最佳答案
将 SDK-Build-Tools 更新到 22.6 和 ADT-Plugin 后,无法通过任何模拟器创建 AVD 或启动任何应用程序这是在更新之前创建的。console 或 log-cat 中没有显
这个错误是我更新IDEA CE到132.1045版本时出现的。AVD 管理器对此 AVD 没有问题。我试图从头开始重新创建 AVD 但没有结果,同样的问题。在 SDK 管理器中没有更新。 如果单击“仍
我是一名优秀的程序员,十分优秀!