为了账号安全,请及时绑定邮箱和手机立即绑定

套接字正在关闭?(安卓和Python)

套接字正在关闭?(安卓和Python)

慕运维8079593 2021-08-05 18:24:17
我尝试在我的 Android 应用程序中使用 Sockets,但遇到了一个小问题。我使用 python 创建服务器,一切正常。服务器收到来自Android客户端的消息,但似乎无法在客户端上获得响应。这是我的服务器端:import socketHOST = '10.10.0.153'PORT = 7800s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)print('socket created')try:    s.bind((HOST, PORT))except socket.error as err:    print('binding faild')s.listen(10)while 1:    conn, addr = s.accept()    print('Connect with ' + addr[0] + ':' + str(addr[1]))    buf = conn.recv(1024)    print(buf)    data = "hello"    conn.send(data.encode('utf-8'))s.close()这是客户端:public class Sender extends AsyncTask<String, Void, Void> {    private final String TAG = "Sender";    Socket s;    PrintWriter pw;    @Override    protected Void doInBackground(String... strings) {    String message = strings[0];    try {        s = new Socket(GlobalVars.SERVER, GlobalVars.PORT);        pw = new PrintWriter(s.getOutputStream());        pw.write(message);        pw.flush();        BufferedReader in = new BufferedReader(new InputStreamReader(s.getInputStream()));        String msg = in.readLine();        System.out.println(msg);        pw.close();        s.close();    } catch(IOException e) {        e.printStackTrace();    }}
查看完整描述

3 回答

?
慕雪6442864

TA贡献1812条经验 获得超5个赞

在 Java 方面,您要求阅读“行”。一行必须以换行符 ( docs ) 结束。如果没有换行符,您的 Java 代码将只是坐在那里,阻塞在 内readLine(),等待换行符到达。将您的python代码更改为:

data = "hello\n"


查看完整回答
反对 回复 2021-08-05
?
婷婷同学_

TA贡献1844条经验 获得超8个赞

尝试pw.close();从您的代码中删除。也尝试删除这个:


  if(!s.isClosed()) {

        try {

            s.close();

        } catch (IOException e) {

            e.printStackTrace();

            Log.e(TAG, "IOException 2");

        }

    }


查看完整回答
反对 回复 2021-08-05
  • 3 回答
  • 0 关注
  • 150 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信