Android -> Socket -> Windows

0

Witam, połączyłem androida w Android Studio oraz Visual 2015 program w C# socketami, w javie ekspertem nie jestem,
dlatego chciałbym zapytać o radę jak wysyłać płynnie wiadomości. Użyć thread? runnable?coś innego? jakieś ansynchroniczne?

Aktualnie program łączy się, mogę wysyłać robiąc kolejkę, gdy już dam .close() to dopiero wiadomości dochodzą.

Proszę o pomoc
Pozdrawiam.

package com.example.root.probakomunikatora;

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

import java.io.BufferedReader;
import java.io.DataOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.*;
import java.io.Console;


public class MainActivity extends AppCompatActivity {

    public EditText editTextMessage;
    public Button buttonConnect;
    public Button buttonSend;
    public Button buttonDisconnect;
    public Socket client;
    public DataOutputStream outToServer;
    public BufferedReader inFromUser;
    public TextView opis;

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

        editTextMessage = (EditText)findViewById(R.id.editText_Message);
        buttonConnect = (Button)findViewById(R.id.button_Connect);
        buttonSend = (Button)findViewById(R.id.button_Send);
        buttonDisconnect = (Button)findViewById(R.id.button_Disconnect);
        opis = (TextView)findViewById(R.id.textView_Controler);

        editTextMessage.setEnabled(false);
        buttonConnect.setEnabled(true);
        buttonSend.setEnabled(false);
        buttonDisconnect.setEnabled(false);
    }

Main activity, mam buttona Connect, Disconnect, Send, Edit tekst Meesage oraz TextView opis:
    public void Connect(View view)
    {

       try{
           client = new Socket("192.168.1.1",13000);
           opis.setText("Status: Connected");

           editTextMessage.setEnabled(true);
           buttonConnect.setEnabled(false);
           buttonSend.setEnabled(true);
           buttonDisconnect.setEnabled(true);

           outToServer = new DataOutputStream(client.getOutputStream());
           inFromUser = new BufferedReader(new InputStreamReader(System.in));

       }
       catch (Exception ex)
       {
           System.out.println(ex.getMessage());
       }

    }
    public void Send(View view)
    {
        String sentence = editTextMessage.getText().toString();
        try {
            outToServer.writeBytes(sentence);
        }
        catch (Exception ex)
        {
            System.out.println(ex.getMessage());
        }
    }
    public void Disconnect(View view)
    {
       try {
           client.close();
       }
       catch (Exception ex)
       {
           System.out.println(ex.getMessage());
       }
    }
}
1

Generalnie obiekt Runnable powinien być opakowany Thread. Przy czym jest to najprostsze tworzenie wątków asynchronicznych. Polecam zapoznać się z podstawami na naszym forumowym kompendium. A co do samego wysyłania wiadomości polecam link na Stacku. Daj znać co konkretnie chcesz zrobić z tymi wątkami, to coś pomyślimy ;)

EDIT
Jeszcze takie cuda znalazłem: tutaj o i tutaj.

1

nie rób tak. założ konto na firebase, wystaw jednego enpointa restowego z C# do tokena z androida , i rób to przez Push Notification. Zabawa w sockety na androidzie jest gówniana i dryluje baterie

1 użytkowników online, w tym zalogowanych: 0, gości: 1