0 / 0 / 0
Регистрация: 07.02.2015
Сообщений: 68

Socket Android Client and Java Socket Server

13.05.2015, 19:40. Показов 10076. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго времени суток.Пытаюсь сделать простое клиент-серверное приложение. Клиент - приложение на Android устройстве. Сервер - Приложение на Java на моём компьютере. Много смотрел теории и написал следующий код.
По идее я включаю сервер на компьютере, затем захожу в приложение на Android устройстве, ввожу в поле ввода слово любое,по нажатию кнопки оно должно отправляться на сервер. Сервер в свою очередь должен принять его , дописать фразу к полученному сообщению "Hello From Server" и вернуть его обратно клиенту.
У меня сервер запускается нормально , а когда пытаюсь отправить на сервер ,по нажатию кнопки происходит ошибка и из приложения просто выкидывает.

Клиент:
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
package com.example.myclient;
 
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.PrintWriter;
import java.net.Socket;
import java.net.UnknownHostException;
 
import android.app.Activity;
import android.content.Context;
import android.os.AsyncTask;
import android.os.Bundle;
import android.os.Handler;
import android.os.Looper;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;
 
 
public class MainActivity extends Activity implements OnClickListener {
    static private ObjectOutputStream output;
    static private ObjectInputStream input;
    private Socket client;
    private PrintWriter printwriter;
    private EditText textField;
    private Button button;
    private String messsage;
    Context c;
    Button send;
    TextView tv1;
    static DataOutputStream dataOutputStream= null;
    DataInputStream dataInputStream = null;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        textField = (EditText) findViewById(R.id.editText); 
        tv1 = (TextView)findViewById(R.id.textView1);
        c=this;
        send=(Button)findViewById(R.id.buttonSend);
        send.setOnClickListener(this);
        
    }
 
    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.main, menu);
        return true;
    }
 
 
    @Override
    public void onClick(View arg0) {
        switch(arg0.getId()){
        case R.id.buttonSend:
            Networking n =new Networking();
            n.execute();        
        break;
        }
        
    }
    public class Networking extends AsyncTask{
 
        @Override
        protected Object doInBackground(Object[] arg0) {
            toast("dasdsadasdada");
            
            messsage = textField.getText().toString(); 
            Socket client =null;
            //textField.setText("");      
            
 
            try {
 
             client = new Socket("188.237.142.66", 6103);
             client.setKeepAlive(true);
             client.setSoTimeout(1000);
             dataOutputStream = new DataOutputStream(client.getOutputStream());
             dataInputStream = new DataInputStream(client.getInputStream());
             
            /* 
             input = new ObjectInputStream(client.getInputStream());
             output = new ObjectOutputStream(client.getOutputStream());
             */
             dataOutputStream.writeUTF(messsage);
             toast((String)dataInputStream.readUTF());
 
            } catch (UnknownHostException e) {
             e.printStackTrace();
             toast("Got an UnknownHostException: " + e.getMessage());
            } catch (IOException e) {
                tv1.setText("Got an IOException: " + e.getMessage());
               toast("Got an IOException: " + e.getMessage());
            }
            return null;
        }
        
    }
 
    
    private void toast(final String s){
        Handler handler = new Handler(Looper.getMainLooper());
        handler.post(
                    new Runnable(){
 
                        @Override
                        public void run() {
                            
                            Toast.makeText(c, s, Toast.LENGTH_SHORT).show();
                            
                        }
                        
                    });
    }
    
    
    
    
 
}
Android Минифест файл для Клиента.

XML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.myclient"
    android:versionCode="1"
    android:versionName="1.0" >
 
    <uses-sdk
        android:minSdkVersion="8"
        android:targetSdkVersion="17" />
   <uses-permission android:name="android.permission.INTERNET"/>  
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE">  
    </uses-permission> 
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" >
    </uses-permission>
    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <activity
            android:name="com.example.myclient.MainActivity"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
 
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>
 
</manifest>


Серверная часть:

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;
 
 
public class MyServer {
 
 public static void main(String[] args){
  ServerSocket serverSocket = null;
  Socket socket = null;
  DataInputStream dataInputStream = null;
  DataOutputStream dataOutputStream = null;
  
  try {
   serverSocket = new ServerSocket(6103,10);
   System.out.println("Listening :6102");
  } catch (IOException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  }
  
  while(true){
   try {
    System.out.println("Сервер готов работать.");
    socket = serverSocket.accept();
    dataInputStream = new DataInputStream(socket.getInputStream());
    dataOutputStream = new DataOutputStream(socket.getOutputStream());
    System.out.println("socket" + socket);
    System.out.println("ip: " + socket.getInetAddress());
    System.out.println("message: " + dataInputStream.readUTF());
    
    dataOutputStream.writeUTF("Hello from Server!" + dataInputStream.readUTF());
   } catch (IOException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
   }
   finally{
    if( socket!= null){
     try {
      socket.close();
     } catch (IOException e) {
      // TODO Auto-generated catch block
      e.printStackTrace();
     }
    }
    
    if( dataInputStream!= null){
     try {
      dataInputStream.close();
     } catch (IOException e) {
      // TODO Auto-generated catch block
      e.printStackTrace();
     }
    }
    
    if( dataOutputStream!= null){
     try {
      dataOutputStream.close();
     } catch (IOException e) {
      // TODO Auto-generated catch block
      e.printStackTrace();
     }
    }
   }
  }
 }
}
Просмотрел много статей на форуме, делал по примеру,вроде бы учёл все ошибки,но Увы не выходит. Буду очень признателен за помощь.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
13.05.2015, 19:40
Ответы с готовыми решениями:

Socket Server, Client
Доброго времени суток. Решил разобраться с сокетами. Но почему-то сообщения не приходят... Клиент: messsage = &quot;Test&quot;; ...

client/server для android phone <-> pc на java
Написал клиент/сервер на java для передачи сообщений из телефона в комп. Клиент на телефон samsung galaxy fit gt-s5670 с Android 2.2.1,...

TCP Socket Client
Всем доброго времени суток. Пытаюсь открыть сокет между Android Client и сервером под виндой (когда то написал на билде, использую в...

4
2884 / 2296 / 769
Регистрация: 12.05.2014
Сообщений: 7,978
14.05.2015, 09:02
лог ошибки где?
0
3 / 3 / 0
Регистрация: 17.11.2013
Сообщений: 59
20.05.2015, 23:27
Я сегодня потратил целый день пытаясь сделать простой websocket на андроиде. Пытался использовать библиотеки специальные, но ничего не получалось.
Хотелось бы узнать, получилось ли решить этот вопрос? Если да, то хотелось бы посмотреть код.
0
2 / 2 / 1
Регистрация: 20.11.2013
Сообщений: 25
22.05.2015, 00:24
Java
1
ServerSocket serv = new ServerSocket(6103,0, InetAddress.getByName("188.237.142.66"));
Попробуйте так объявить сокет-сервер
0
0 / 0 / 0
Регистрация: 07.02.2015
Сообщений: 68
26.05.2015, 22:09  [ТС]
Вроде бы получилось,вот мой клиент
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
package com.example.labwork_1;
 
import java.io.BufferedReader;
import java.io.DataInputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.InetAddress;
import java.net.Socket;
import java.net.UnknownHostException;
import java.util.ArrayList;
 
import android.app.Activity;
import android.content.Context;
import android.os.AsyncTask;
import android.os.Bundle;
import android.os.Handler;
import android.os.Looper;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;
import android.widget.Toast;
 
public class Statistic extends Activity implements OnClickListener {
    static private Integer Win,Loose,Semi;
    TextView tvWin,tvLoose,tvSemi;
    Context c;
    Button btnShow;
    PrintWriter out = null;
    BufferedReader in = null;
    Socket clientSocket = null;
    String strFromServer;
    String fromServer;
    
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.statistic);
        c=this;
        btnShow=(Button)findViewById(R.id.buttonShowStat);
        btnShow.setOnClickListener(this);
        Networking n = new Networking();
        n.execute();
                
        
    }
 
    private void toast(final String s){
        Handler handler = new Handler(Looper.getMainLooper());
        handler.post(
                    new Runnable(){
 
                        @Override
                        public void run() {
                            
                            Toast.makeText(c, s, Toast.LENGTH_LONG).show();
                            
                        }
                        
                    });
    }
    
    
    
    public class Networking extends AsyncTask<Void,Void,Void>{
         String fromServer;
         Integer port = 4561;
        @Override
        protected Void doInBackground(Void... arg0) {
            try {
                clientSocket = new Socket(InetAddress.getByName("192.168.0.25"), port);
                out=new PrintWriter(clientSocket.getOutputStream(), true); 
                in=new BufferedReader(new InputStreamReader(clientSocket.getInputStream()));
            } catch (UnknownHostException e) {
                // TODO Auto-generated catch block
                toast("UnknownHostException"+e.getMessage());
                e.printStackTrace();
            } catch (IOException e) {
                // TODO Auto-generated catch block
                toast("IOException"+e.getMessage());
                e.printStackTrace();
            }
            
            return null;
        }
        
        
    }
    
 
 
    @Override
    public void onClick(View arg0) {
        switch(arg0.getId()){
        case R.id.buttonShowStat:
Thread t = new Thread(new Runnable() {
                
                public void run() {
                    try {
                        out.println("getstat,1,1,1");
                        while ((fromServer = in.readLine()) != null) {
                            strFromServer=fromServer;
 
                            if(strFromServer.contains("st,")){
                                String[] parts = strFromServer.split(",");
                                String dn=parts[0];
                                 Win=Integer.parseInt(parts[1]);
                                 Loose=Integer.parseInt(parts[2]);
                                 Semi=Integer.parseInt(parts[3]);
                                //toast("Полученная статистика: Побед = "+Win+"  Поражений = "+ Loose+"  Ничьих = "+Semi);
                                //out.println("getstat");
                            }else toast("Ошибка");
                            
                        }
                        out.close();
                        in.close();
                        clientSocket.close();
                    } catch (UnknownHostException e) {
                        // TODO Auto-generated catch block
                        toast("UnknownHostException"+e.getMessage());
                        e.printStackTrace();
                    } catch (IOException e) {
                        // TODO Auto-generated catch block
                        toast("IOException"+e.getMessage());
                        e.printStackTrace();
                    }
                    finally{
                         if(clientSocket != null){
                             try{
                                 clientSocket.close();
                             }catch(IOException e){
                                 toast("Got an IOException"+e.getMessage());
                                 e.printStackTrace();
                             }
                         }
                     }
                     if(out !=null){
                         out.close();
                     }
                     if(in !=null){
                         try{
                             in.close();
                         }catch(IOException e){
                             toast("Got an IOException"+e.getMessage());
                             e.printStackTrace();
                         }
                     }
                }
              });
              t.start();
              t.interrupt();
        break;
        }
        
    }   
 
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
26.05.2015, 22:09
Помогаю со студенческими работами здесь

Socket AndroiD
В общем хочу написать сокет (TCP клиент) на андрюху. http://myandroidsolutions.blogspot.ru/2012/07/android-tcp-connection-tutorial.html ...

Nodejs net socket server and android socket client
Добрый день Форумчане нужно помощь гуру! Решил с другом написать сервер на ноде с использование сокетов и андроид клиент отправки сокет. Но...

Windows socket server python + socket client js
Здравствуйте пытаюсь решить такую задачу, на веб странице реализовал soket клиент на js, и socket server, сокет сервер получает данные от...

Server(Client)Socket
Всем привет. Собираюсь сделать передачу команд между сервером-клиентом через socket'ы, но возник один вопрос: будут ли проблемы с...

Client и Server Socket
Доброго дня суток , подскажите как можно переслать , к примеру , с клиента на сервер 2 переменные , я знаю только как можно одну: void...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

Новые блоги и статьи
Звёздная пыль
kumehtar 20.06.2025
Я просто это себе представляю: как создавался этот мир. Как энергия слипалась в маленькие частички. Как они собирались в первые звёзды, как во вселенной впервые появился Свет. Как эти звёзды. . .
Создание нейросети с PyTorch
AI_Generated 19.06.2025
Ключевое преимущество PyTorch — его питоновская натура. В отличие от TensorFlow, который изначально был построен как статический вычислительный граф, PyTorch предлагает динамический подход. Это. . .
JWT аутентификация в ASP.NET Core
UnmanagedCoder 18.06.2025
Разрабатывая веб-приложения, я постоянно сталкиваюсь с дилеммой: как обеспечить надежную аутентификацию пользователей без ущерба для производительности и масштабируемости? Классические подходы на. . .
Краткий курс по С#
aaLeXAA 18.06.2025
Здесь вы найдете все необходимые функции чтоб написать програму на C# Задание 1: КЛАСС FORM 1 public partial class Form1 : Form { Spisok listin = new Spisok(); . . .
50 самых полезных примеров кода Python для частых задач
py-thonny 17.06.2025
Эффективность работы разработчика часто измеряется не количеством написаных строк, а скоростью решения задач. Готовые сниппеты значительно ускоряют разработку, помогают избежать типичных ошибок и. . .
C# и продвинутые приемы работы с БД
stackOverflow 17.06.2025
Каждый . NET разработчик рано или поздно сталкивается с ситуацией, когда привычные методы работы с базами данных превращаются в источник бессонных ночей. Я сам неоднократно попадал в такие ситуации,. . .
Angular: Вопросы и ответы на собеседовании
Reangularity 15.06.2025
Готовишься к техническому интервью по Angular? Я собрал самые распространенные вопросы, с которыми сталкиваются разработчики на собеседованиях в этом году. От базовых концепций до продвинутых. . .
Архитектура Onion в ASP.NET Core MVC
stackOverflow 15.06.2025
Что такое эта "луковая" архитектура? Термин предложил Джеффри Палермо (Jeffrey Palermo) в 2008 году, и с тех пор подход только набирал обороты. Суть проста - представьте себе лук с его. . .
Unity 4D
GameUnited 13.06.2025
Четырехмерное пространство. . . Звучит как что-то из научной фантастики, правда? Однако для меня, как разработчика со стажем в игровой индустрии, четвертое измерение давно перестало быть абстракцией из. . .
SSE (Server-Sent Events) в ASP.NET Core и .NET 10
UnmanagedCoder 13.06.2025
Кажется, Microsoft снова подкинула нам интересную фичу в новой версии фреймворка. Работая с превью . NET 10, я наткнулся на нативную поддержку Server-Sent Events (SSE) в ASP. NET Core Minimal APIs. Эта. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru