Android客户端使用Java套接字连接到pc上的服务器
我想向桌面电脑上的服务器发送一个简单字符串。以下是我在电脑上的内容:Android客户端使用Java套接字连接到pc上的服务器,java,android,sockets,network-programming,Java,Android,Sockets,Network Programming,我想向桌面电脑上的服务器发送一个简单字符串。以下是我在电脑上的内容: public static void main(String[] args) { System.out.println("Server Started"); Server server = new Server(); server.start(); } public void start(){ try { ServerSocket SRVSOCK = new ServerSocket(333)
public static void main(String[] args) {
System.out.println("Server Started");
Server server = new Server();
server.start();
}
public void start(){
try {
ServerSocket SRVSOCK = new ServerSocket(333);
Socket SOCK = SRVSOCK.accept();
InputStreamReader ir = new InputStreamReader(SOCK.getInputStream());
BufferedReader bf = new BufferedReader(ir);
String MESSAGE = bf.readLine();
System.out.println(MESSAGE);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
对于我的android平板电脑,我在onCreate()
:
我看到你可以创建一个你需要的新线程(否则应用程序界面会冻结),但它仍然不会将文本发送到我的服务器,我已经在我的windows防火墙中添加了传入和传出端口,甚至尝试关闭防火墙,但仍然没有成功
android代码运行在真正的物理平板电脑(Nexus 7 2013)上,而不是模拟器上
这里怎么了
当应用程序打开时,这是我的日志猫中的内容
03-24 13:43:59.695: I/ActivityManager(768): START u0 {act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10200000 cmp=com.hashimo.mcpeworldconverter/.MainActivity bnds=[200,1314] [400,1590] (has extras)} from uid 10022 on display 0
03-24 13:43:59.780: I/ActivityManager(768): Start proc com.hashimo.mcpeworldconverter for activity com.hashimo.mcpeworldconverter/.MainActivity: pid=6724 uid=10140 gids={50140, 9997, 1028, 1015, 3003} abi=armeabi-v7a
03-24 13:44:00.338: I/ActivityManager(768): Displayed com.hashimo.mcpeworldconverter/.MainActivity: +592ms
您正在声明一个线程,但忘记了。start()它。因此您的代码不会被执行。您有
Server=newserver()
什么是Server
?@JonasCz我忘了去掉它(这段代码是不久前我不太了解的代码)“Server-Server=new-Server();Server.start();”只是在同一个类中调用“start()”方法,这里是“public-void-start(){…}”,你确定它真的在调用那个方法吗?放入一些println并检查。客户端代码中的10.0.0.3 IP地址看起来不正确,可以从平板电脑ping服务器吗?LogCat中是否存在任何异常/堆栈跟踪?@JonasCz是的,这是我的计算机ip。。。我发现了一些事情。当我进入平板电脑网络浏览器,输入10.0.0.3:333
并按enter键时,我电脑上的服务器会显示GET/HTTP/1.1
。因此,它是可访问和工作。加上应用程序并没有崩溃,或者什么都没做,我想。。。我在我的清单上有访问WIFI\u状态
和互联网
权限,也是一个很好的捕获,我直到现在才看到,但OP说他的代码在普通Java上有效,但在android上无效。。奇怪。非常感谢你,我刚刚开始弄清楚什么是线程在哪里以及它们的用途。你是个救生员
03-24 13:43:59.695: I/ActivityManager(768): START u0 {act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10200000 cmp=com.hashimo.mcpeworldconverter/.MainActivity bnds=[200,1314] [400,1590] (has extras)} from uid 10022 on display 0
03-24 13:43:59.780: I/ActivityManager(768): Start proc com.hashimo.mcpeworldconverter for activity com.hashimo.mcpeworldconverter/.MainActivity: pid=6724 uid=10140 gids={50140, 9997, 1028, 1015, 3003} abi=armeabi-v7a
03-24 13:44:00.338: I/ActivityManager(768): Displayed com.hashimo.mcpeworldconverter/.MainActivity: +592ms