Есть серверная часть написанная на 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)
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Виртуальный выделенный сервер (VDS) становится отличным выбором
У меня есть некий сложный объект, состоящий из других объектовЯ хочу удалить этот сложный объект и все объекты из которых он состоит
Как сделать что бы при нажатии на Enter не пропадала программная клавиатура?
Кто имеет опыт создания анимаций по типу, как на главной странице сайта SimilarWeb?! Задача в создании анимации, которая вращается по своей оси!
Медиа запрос работает на компьютере: Уменьшаю и увеличиваю ширину окна браузера - всё изменяетсяА на телефоне не работает