TCP сокет на Android Studio

183
06 июня 2019, 15:50

Есть серверная часть написанная на C# и есть клиентская часть, написанная на Java под андроид. При попытке подключения телефона к серверу вылетает все время одна ошибка. Час блуждания по гуглу не дал результатов.

(C#) Сервер:

        string path = @"C:\Users\sdfaf\Downloads\Ubuntu-logo-large.png";
        byte[] img = File.ReadAllBytes(path);
        TcpListener listener = new TcpListener(IPAddress.Any, 2700);
        listener.Start();
        Console.WriteLine("Жду...");
        TcpClient client = listener.AcceptTcpClient();
        Console.WriteLine("Дождался");
        byte[] buff = new byte[1024];
        int size = client.GetStream().Read(buff, 0, buff.Length);
        string msg = Encoding.ASCII.GetString(buff, 0, size);
        Console.WriteLine(msg);
        if (msg == "image")
        {
            client.GetStream().Write(img, 0, img.Length);
            Console.WriteLine("Отправил");
        }
        client.Close();
        listener.Stop();

Клиент:

package test.testapp;
import android.app.Activity;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.os.Bundle;
import android.view.View;
import android.widget.ImageView;
import java.io.IOException;
import java.io.PrintWriter;
import java.net.Socket;
public class MainActivity extends Activity
{
    private ImageView img;
    @Override
    protected void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main_layout);
        img = findViewById(R.id.imageView);
    }
    public void downloadImage(View view) {
        byte buff[];
        Socket socket = null;
        try {
            socket = new Socket("192.168.1.2", 2700);
        } catch (IOException e) {
            e.printStackTrace();
        }
        PrintWriter pw = null;
        try {
            pw = new PrintWriter(socket.getOutputStream());
        } catch (IOException e) {
            e.printStackTrace();
        }
        pw.write("image");
        pw.flush();
        buff = new byte[128 * 1024];
        int size = 0;
        try {
            size = socket.getInputStream().read(buff);
        } catch (IOException e) {
            e.printStackTrace();
        }
        Bitmap bmp = BitmapFactory.decodeByteArray(buff, 0, size);
        img.setImageBitmap(bmp);
        try {
            socket.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

Манифест:

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="test.testapp">
    <uses-permission android:name="android.permission.INTERNET" />
    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">
        <activity android:name=".MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

</manifest>

Ошибка:

> E/AndroidRuntime: FATAL EXCEPTION: main
    Process: test.testapp, PID: 21978
    java.lang.IllegalStateException: Could not execute method for android:onClick
        at android.view.View$DeclaredOnClickListener.onClick(View.java:4543)
        at android.view.View.performClick(View.java:5317)
        at android.view.View$PerformClick.run(View.java:21648)
        at android.os.Handler.handleCallback(Handler.java:815)
        at android.os.Handler.dispatchMessage(Handler.java:104)
        at android.os.Looper.loop(Looper.java:207)
        at android.app.ActivityThread.main(ActivityThread.java:5933)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:958)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:819)
     Caused by: java.lang.reflect.InvocationTargetException
        at java.lang.reflect.Method.invoke(Native Method)
        at android.view.View$DeclaredOnClickListener.onClick(View.java:4538)
        at android.view.View.performClick(View.java:5317) 
        at android.view.View$PerformClick.run(View.java:21648) 
        at android.os.Handler.handleCallback(Handler.java:815) 
        at android.os.Handler.dispatchMessage(Handler.java:104) 
        at android.os.Looper.loop(Looper.java:207) 
        at android.app.ActivityThread.main(ActivityThread.java:5933) 
        at java.lang.reflect.Method.invoke(Native Method) 
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:958) 
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:819) 
     Caused by: android.os.NetworkOnMainThreadException
        at android.os.StrictMode$AndroidBlockGuardPolicy.onNetwork(StrictMode.java:1321)
        at libcore.io.BlockGuardOs.connect(BlockGuardOs.java:110)
        at libcore.io.IoBridge.connectErrno(IoBridge.java:150)
        at libcore.io.IoBridge.connect(IoBridge.java:133)
        at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:188)
        at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:168)
        at java.net.Socket.startupSocket(Socket.java:627)
        at java.net.Socket.tryAllAddresses(Socket.java:137)
        at java.net.Socket.<init>(Socket.java:187)
        at java.net.Socket.<init>(Socket.java:159)
        at test.testapp.MainActivity.downloadImage(MainActivity.java:32)
        at java.lang.reflect.Method.invoke(Native Method) 
        at android.view.View$DeclaredOnClickListener.onClick(View.java:4538) 
        at android.view.View.performClick(View.java:5317) 
        at android.view.View$PerformClick.run(View.java:21648) 
        at android.os.Handler.handleCallback(Handler.java:815) 
        at android.os.Handler.dispatchMessage(Handler.java:104) 
        at android.os.Looper.loop(Looper.java:207) 
        at android.app.ActivityThread.main(ActivityThread.java:5933) 
        at java.lang.reflect.Method.invoke(Native Method) 
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:958) 
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:819) 
READ ALSO
Удаление объекта из Realm

Удаление объекта из Realm

У меня есть некий сложный объект, состоящий из других объектовЯ хочу удалить этот сложный объект и все объекты из которых он состоит

161
Не скрывать клавиатуру на Android

Не скрывать клавиатуру на Android

Как сделать что бы при нажатии на Enter не пропадала программная клавиатура?

176
Анимация вокруг своей оси

Анимация вокруг своей оси

Кто имеет опыт создания анимаций по типу, как на главной странице сайта SimilarWeb?! Задача в создании анимации, которая вращается по своей оси!

156
Не работают медиа запросы css [закрыт]

Не работают медиа запросы css [закрыт]

Медиа запрос работает на компьютере: Уменьшаю и увеличиваю ширину окна браузера - всё изменяетсяА на телефоне не работает

131