Связь Java(клиент) Python(сервер)- Socket

Проблема вся в том, что сообщение до андройда (клиента) не доходят, или вообще не идут. Он на андройде пишет что соединился, я с андройда отправляю одно сообщение Python server его выводит, а потом второе ему отправляю, его не выводит, но андройд пишет что отправил, до этого он все принимал. Но на андройд вообще ничего не приходит и не проходило. Мне нужно отправить на сервер(именно Python server) обработать и вернуть. Как это реализовать?


import socket
import sys

HOST ='192.168.0.102' #'192.168.0.100'#'192.168.1.102'
PORT = 8280

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
print ('socket created')

#Bind socket to Host and Port
try:
    s.bind((HOST, PORT))
except socket.error as err:
    print ('Bind Failed, Error Code: ' + str(err[0]) + ', Message: ' + err[1])
    sys.exit()

print ('Socket Bind Success!')


#listen(): This method sets up and start TCP listener.
s.listen(10)
print ('Socket is now listening')


while 1:
    conn, addr = s.accept()
    print ('Connect with ' + addr[0] + ':' + str(addr[1]) ) #str(

    datta = "Client sSet data"
    Host1 =  '' #'192.168.0.102'
    Port1 =  2 # 8280

    Host1 =  addr[0]
    Port1 =  addr[1]

    sor = socket.socket(socket.AF_INET,socket.SOCK_DGRAM)

    sor.bind(('', 0)) # (('192.168.0.102', 8280))   # Задаем сокет как клиент
    # server = (Host1 , Port1)
    sor.sendto(datta.encode('utf-8'), ((Host1 , Port1)) ) #server)# Уведомляем сервер о подключении

    print('Send data CLIENT')
    conn.sendall(datta.encode())
    print('2Send data CLIENT2')
    buf = conn.recv(64)

    print (buf)

s.close()

полужирный курсив

import android.annotation.SuppressLint;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.Socket;

@SuppressLint("SetTextI18n")
public class MainActivity extends AppCompatActivity {

    Thread Thread1 = null;

    EditText etIP, etPort;
    TextView tvMessages;

    EditText etMessage;
    Button btnSend;

    String SERVER_IP;
    int SERVER_PORT;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        etIP = findViewById(R.id.etIP);
        etPort = findViewById(R.id.etPort);
        //test
        etIP.setText("192.168.0.102");
        etPort.setText("8280");

        tvMessages = findViewById(R.id.tvMessages);
        etMessage = findViewById(R.id.etMessage);
        btnSend = findViewById(R.id.btnSend);

        Button btnConnect = findViewById(R.id.btnConnect);
        btnConnect.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                tvMessages.setText("");
                SERVER_IP = etIP.getText().toString().trim();
                SERVER_PORT = Integer.parseInt(etPort.getText().toString().trim());
                Thread1 = new Thread(new Thread1());
                Thread1.start();
            }
        });

        btnSend.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                String message = etMessage.getText().toString().trim();
                if (!message.isEmpty()) {
                    new Thread(new Thread3(message)).start();
                }
            }
        });
    }

    private PrintWriter output;
    private BufferedReader input;

    class Thread1 implements Runnable {

        @Override
        public void run() {
            Socket socket;
            try {
                socket = new Socket(SERVER_IP, SERVER_PORT);

                output = new PrintWriter(socket.getOutputStream());
                input = new BufferedReader(new InputStreamReader(socket.getInputStream()));

                runOnUiThread(new Runnable() {

                    @Override
                    public void run() {
                        tvMessages.setText("Connected\n");
                    }
                });
                new Thread(new Thread2()).start();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }

    class Thread2 implements Runnable {
        @Override
        public void run() {
            while (true) {
                try {
                    final String message = input.readLine();
                    if (message != null) {
                        runOnUiThread(new Runnable() {
                            @Override
                            public void run() {
                                tvMessages.append("server: " + message + "\n");
                            }
                        });
                    } else {
                        Thread1 = new Thread(new Thread1());
                        Thread1.start();
                        return;
                    }
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
    }

    class Thread3 implements Runnable {
        private String message;

        Thread3(String message) {
            this.message = message;
        }

        @Override
        public void run() {
            output.write(message);
            output.flush();
            runOnUiThread(new Runnable() {
                @Override
                public void run() {
                    tvMessages.append("client: " + message + "\n");
                    etMessage.setText("");
                }
            });
        }
    }
}



Manifest Manifest

<uses-permission android:name="android.permission.INTERNET" />

    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

полужирный курсив


Ответы (0 шт):