如何使用套接字编程将android手机客户端连接到同一网络上的python服务器?

2024-09-25 06:27:12 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试将我的android应用程序(客户端)连接到我的PC(python服务器)。他们都在同一个网络上。我可以从我的电脑ping我的安卓手机,也可以从手机ping我的电脑。但当我尝试使用套接字连接它们时,android应用程序在连接时陷入困境,过了一段时间就会抛出超时异常。 以下是Android客户端类的代码:

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;
}
}

它在新套接字处卡住,并在一段时间后抛出异常

以下是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

Tags: 服务器应用程序客户端newstringsocketpingandroid