【问题标题】:How to connect android phone client to python server on same network using socket programming?如何使用套接字编程将android手机客户端连接到同一网络上的python服务器?
【发布时间】:2020-07-31 03:05:30
【问题描述】:

我正在尝试将我的 android 应用程序(客户端)连接到我的 PC(python 服务器)。他们都在同一个网络上。我可以从我的 PC 和 PC 上从手机 ping 我的 android 手机。但是,当我尝试使用套接字连接它们时,android 应用程序会卡在连接状态,一段时间后会引发超时异常。 这是Android Client类的代码:

public class Client extends AsyncTask<Void, Void, Void> {

private String mCommand;
private String mHostIP;

public Client(String mCommand, String mHostIP) {
    this.mCommand = mCommand;
    this.mHostIP = mHostIP;
}

@Override
protected Void doInBackground(Void... voids) {
    try {

        InetAddress serverAddr = InetAddress.getByName(mHostIP);
        Socket soc = new Socket(serverAddr,9999);

        OutputStream toServer = soc.getOutputStream();
        PrintWriter output = new PrintWriter(toServer);
        output.println(mCommand);
        DataOutputStream out = new DataOutputStream(toServer);
        out.writeBytes(mCommand);
    } catch (IOException e) {
        e.printStackTrace();
    }
    return null;
}
}

卡在新的 Socket 上一段时间后抛出异常。

这里是 Python 服务器的代码:

import socket
import os

hostname = socket.gethostname()
IPAddr = socket.gethostbyname(hostname)
print('My IP: '+IPAddr)
port  = 9999

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
print ("socket successfully created")

server_address = ('192.168.10.4', 9999)

s.bind(server_address)

s.listen(1)
print ("socket is listening")

while True:
    try:
        c, addr = s.accept()
        print ('Got connection from', addr)
        type = c.recv(1024).decode('utf-8')
        print(type)
    finally:
        print('Could not connect')
        c.close()
        break

【问题讨论】:

  • 客户端使用的ip是什么?抛出哪个异常?
  • 展示你如何开始你的异步任务。
  • print('My IP: '+IPAddr)。嗯.. 打印的是什么?
  • '192.168.10.4', 为什么要硬编码那个地址?和印刷的有区别吗?你为什么要将你的服务器绑定到一个/那个地址?
  • 对不起,我不知道出了什么问题。有防火墙吗?

标签: python android sockets tcp


【解决方案1】:

仔细查看您的防火墙。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-12
    • 2023-01-03
    • 2021-08-08
    • 2013-09-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多