Надо сделать наиболее простое соединение между телефоном Android и программой на ПК с помощью языка java. Пытался многократно, прочитал множество статей и вопросов на этом сайте, но все равно не получается. Мне главное простота, меня интересует как именно сделать соединение.
Я пытался сделать наиболее простой клиент, хочу понять для начала как установить соединение, а многопоточность и проблему со сменой ориентации устройства на потом. Укажите пожалуйста ошибки и расскажите как установить соединение посредством сокетов. Искал похожие вопросы но нужного мне не нашел.
Вот пытался сделать простейший сервер на ПК:
public static void main(String[] args) {
try {
ServerSocket serverSocket = new ServerSocket(4444);
while (true) {
Socket socket = serverSocket.accept();
BufferedReader reader= new BufferedReader(new InputStreamReader(socket.getInputStream()));
String s = reader.readLine();
System.out.println("Message: " + s);}
} catch (IOException e) {
e.printStackTrace();
}
}
А так же клиент для Аndroid:
public class MainActivity extends AppCompatActivity {
String ip = "";
int port = 0;
Button set;
Button send;
EditText ipField;
EditText portField;
EditText messageField;
TextView problemDisplay;
PrintWriter writer;
boolean checkSocket = false;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
set = (Button) findViewById(R.id.setBtn);
send = (Button) findViewById(R.id.sendBtn);
ipField = (EditText) findViewById(R.id.ipEditText);
portField = (EditText) findViewById(R.id.portEditText);
messageField = (EditText) findViewById(R.id.messageEditText);
problemDisplay = (TextView) findViewById(R.id.textProblem);
}
public void setSettings(View view) {
try {
ip = ipField.getText().toString();
port = Integer.parseInt(ipField.getText().toString());
}catch (Exception e){
problemDisplay.setText("Invalid data");
}
try {
Socket socket = new Socket(InetAddress.getByName(ip), port);
writer = new PrintWriter(new OutputStreamWriter(socket.getOutputStream()));
checkSocket = true;
}catch (Exception e){
problemDisplay.setText("socket error");
}
}
public void send(View view) {
if (checkSocket) {
String message = messageField.getText().toString();
writer.print(message);
writer.flush();
}else {problemDisplay.setText("set Data");}
}
}
Приложение вылетает со следующим сообщением об ошибке:
java.lang.IllegalStateException: Could not execute method for android:onClick
at android.support.v7.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:293)
at android.view.View.performClick(View.java:5207)
at android.view.View$PerformClick.run(View.java:21177)
at android.os.Handler.handleCallback(Handler.java:742)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:154)
at android.app.ActivityThread.main(ActivityThread.java:5527)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:739)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:629)
Caused by: java.lang.reflect.InvocationTargetException
at java.lang.reflect.Method.invoke(Native Method)
at android.support.v7.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:288)
... 9 more
Caused by: java.net.SocketException: socket failed: EACCES (Permission denied)
at libcore.io.IoBridge.socket(IoBridge.java:619)
at java.net.PlainSocketImpl.create(PlainSocketImpl.java:198)
at java.net.Socket.startupSocket(Socket.java:584)
at java.net.Socket.<init>(Socket.java:226)
at com.example.nikita.simpleclient.MainActivity.setSettings(MainActivity.java:49)
... 11 more
Caused by: android.system.ErrnoException: socket failed: EACCES (Permission denied)
at libcore.io.Posix.socket(Native Method)
at libcore.io.BlockGuardOs.socket(BlockGuardOs.java:282)
at libcore.io.IoBridge.socket(IoBridge.java:604)
... 15 more
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Здравствуйте! В рамках одного проекта, есть два приложения (модуля), которые используют один общий модульПеревожу все это дело на maven и столкнулся...
У меня изометрическая картаИ у меня не получается узнать координаты блока, то есть getCell
Пытаюсь подгружать CardView в один из фрагментовНо при открытии фрагмента приложение вылетает
Логика приложения: проверяю существование файла, если его нет - вызываю внутренний класс ParseBookCovers, который парсит json файл с сервера и записывает...