Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/341.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/powerbi/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用插座连接电脑时出现问题_Java_Android_Python - Fatal编程技术网

Java 使用插座连接电脑时出现问题

Java 使用插座连接电脑时出现问题,java,android,python,Java,Android,Python,我正在尝试使用WiFi连接我的手机和笔记本电脑。两个设备都连接到一个网络。笔记本电脑的IP是192.168.1.35,所以我试着通过智能手机连接这个IP(防火墙关闭)。代码如下: package org.me.androidapp; import android.app.Activity; import android.os.Bundle; import android.widget.Toast; import java.io.BufferedWriter; import java.io.IO

我正在尝试使用WiFi连接我的手机和笔记本电脑。两个设备都连接到一个网络。笔记本电脑的IP是192.168.1.35,所以我试着通过智能手机连接这个IP(防火墙关闭)。代码如下:

package org.me.androidapp;

import android.app.Activity;
import android.os.Bundle;
import android.widget.Toast;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.net.Socket;
import java.net.UnknownHostException;
import java.util.logging.Level;
import java.util.logging.Logger;

public class MainActivity extends Activity {

    @Override
    public void onCreate(Bundle icicle) {
        super.onCreate(icicle);
        try {
            Toast.makeText(this.getApplicationContext(), "OK", Toast.LENGTH_LONG).show();
            Socket socket = new Socket("192.168.1.35", 9999);
            PrintWriter out = new PrintWriter( new BufferedWriter( new OutputStreamWriter(socket.getOutputStream())),true);
            out.println("dupa");
            socket.close();
        } catch (UnknownHostException ex) {
            Toast.makeText(this.getApplicationContext(), "Nie odnaleziono hosta", Toast.LENGTH_LONG).show();
            Logger.getLogger(MainActivity.class.getName()).log(Level.SEVERE, null, ex);
        } catch (IOException ex) {
            Toast.makeText(this.getApplicationContext(), ex.toString(), Toast.LENGTH_LONG).show();
            Logger.getLogger(MainActivity.class.getName()).log(Level.SEVERE, null, ex);
        }

    }

}
Im使用以下代码(用python编写)作为服务器:

import socket

_connector = None
_running = True

_host = 'localhost'
_port = '9999'
_maxClient = 999

debug = True
_policyFile = '<?xml version="1.0" encoding="UTF-8"?><cross-domain-policy xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://www.adobe.com/xml/schemas/PolicyFileSocket.xsd"><allow-access-from domain="*" to-ports="*" secure="false" /><site-control permitted-cross-domain-policies="master-only" /></cross-domain-policy>'

## Trace debugging messages.
#  @param aString String to be printed.
def printd( aString ):
    if debug:
        print aString

_connector = socket.socket( socket.AF_INET, socket.SOCK_STREAM )
_connector.bind ( ( str(_host), int(_port) ) )
_connector.listen ( int(_maxClient) )
_running = True

while _running:
  printd('Running on port ' + _port + ' ... ')
  channel, details = _connector.accept()

  if _running:
      printd( 'New connection with: ' + str(details) )
      channel.setblocking( 1 )
      recvData = channel.recv(2000)

      if("policy-file-request" in recvData):
         channel.send(_policyFile)

      printd( 'host: ' + str(details[0]) )
      printd( 'port: ' + str(details[1]) )
      printd( 'port: ' + str(int(details[1])) )

      channel.close()
导入套接字
_连接器=无
_运行=真
_主机='localhost'
_端口='9999'
_maxClient=999
调试=真
_策略文件=“”
##跟踪调试消息。
#要打印的@param aString字符串。
def打印D(收缩):
如果调试:
印花套圈
_连接器=socket.socket(socket.AF\u INET,socket.SOCK\u流)
_connector.bind((str(_host),int(_port)))
_connector.listen(int(_maxClient))
_运行=真
运行时:
printd('在端口'+\'上运行端口+'…')
通道,详细信息=_connector.accept()
如果正在运行:
printd('newconnection with:'+str(详细信息))
通道锁定(1)
recvData=channel.recv(2000)
如果(recvData中的“策略文件请求”):
channel.send(_策略文件)
printd('host:'+str(详细信息[0]))
printd('port:'+str(详细信息[1]))
printd('port:'+str(int(详细信息[1]))
频道关闭()
我正在手机上测试这个应用,因为我不知道如何配置emulator(有帮助吗?:))。手机显示错误“Java.Net.ConnectionError localhost/192.168.1.1:9999-连接被拒绝”。我也想知道为什么它显示IP 192.168.1.1

请帮忙,
Chris

您的python代码绑定到本地主机,这意味着它不在网络上侦听,而只在环回上侦听,因此您应该将其更改为在网络地址(即192.168.1.35)上侦听您的python代码绑定到本地主机,这意味着它不在网络上侦听,而只在环回上侦听,因此您应该将其更改为在计算机的网络地址(即192.168.1.35)而不是127.0.0.1上侦听。您的python服务器对我来说运行正常(提示:
telnet localhost 9999
是一种很好的检查方法)。我们可以从logcat查看堆栈跟踪吗?您的python服务器对我来说工作正常(提示:
telnet localhost 9999
是一种很好的检查方法)。我们可以从logcat中查看堆栈跟踪吗?很好,作为替代,您可以绑定到0.0.0.0,我发现它更简单、更健壮。好的,第二个问题是处理android应用程序,但我解决了。9999端口还没有准备好使用,我更改了端口,现在一切正常:)谢谢!好的,作为一种替代,你可以绑定到0.0.0.0,我发现它更简单、更健壮。好的,第二个问题是处理android应用程序,但我解决了它。9999端口未准备好使用,我更改了端口,现在一切正常:)谢谢!