powered by simpleCommunicator - 2.0.40     © 2025 Programmizd 02
Форумы / Android [игнор отключен] [закрыт для гостей] / Sockets
3 сообщений из 3, страница 1 из 1
Sockets
    #38688200
BoJI4er
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Создал соединение:

Android - Server Socket
PC - Client Socket

При отправке данных(200 мс/1 пакет данных) с клиента на сервер (PC->Android) пакеты сначала идут нормально, потом начинается задержка... которая постоянно увеличивается.

Если интервал отправки данных увеличить, то все "потерянный пакеты со временем доходят". Такое ощущение что буфер на Android переполняется и начинает "бунтовать".

Задержка бывает разной... от 5-6 пакетов до 100-200. И что на это влияет мне не понятно.
Делал сетку между двумя ПК - "летали" с интервалом в 2мс.

Как его очищать(не желательно) или принудительно вытягивать из него информацию..?
код Android
Код: 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 ua.radian.wifi;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.net.InetAddress;
import java.net.NetworkInterface;
import java.net.ServerSocket;
import java.net.Socket;
import java.net.SocketException;
import java.util.Enumeration;

import android.app.Activity;
import android.os.Bundle;
import android.os.Handler;
import android.util.Log;


public class MainActivity extends Activity {


 
    // DEFAULT IP
    public static String SERVERIP = "10.0.2.1";
 
    // DESIGNATE A PORT
    public static final int SERVERPORT = 17000;
    public static final String  LOG = "MyLog";
    private Handler handler = new Handler();
    public BufferedReader in;
    public PrintWriter out;
    public int MyCount = 0;
    public  String line = null;
    
    private ServerSocket serverSocket;
 
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
 
        Thread fst = new Thread(new ServerThread());
        fst.start();
    }

    public class ServerThread implements Runnable {
 
        public void run() {
            try {
            	Log.d(LOG, "start");	
                if (SERVERIP != null) {
                    handler.post(new Runnable() {
                        @Override
                        public void run() {
                        	Log.d(LOG, "Listening on IP: " + SERVERIP);	
                        }
                    });
                    serverSocket = new ServerSocket(SERVERPORT);
                    Socket client = null;
                    while (true) {
                        // LISTEN FOR INCOMING CLIENTS
                    	 Log.d(LOG,"wait you...");
                    	client = serverSocket.accept();
                    	client.setTcpNoDelay(true);
                    	
                        Log.d(LOG,"client IP : "+client.getLocalAddress().toString());
                        Log.d(LOG,"client Port : " + Integer.toString(client.getPort()));
                        handler.post(new Runnable() {
                            @Override
                            public void run() {
                            	Log.d(LOG, "Connected.");	
                        
                            }
                        });
 
                        	client.setSendBufferSize(255);
         
                            in = new BufferedReader(new InputStreamReader(client.getInputStream()));
                            out = new PrintWriter(new BufferedWriter(new OutputStreamWriter(client.getOutputStream())), true);
                            out.println("|I found You");      
                            
                            new Thread(new Runnable() {
								
								@Override
								public void run() {
									// TODO Auto-generated method stub
									 try {
										while ((line = in.readLine()) != null) {
		                            		
			                            	Log.d(LOG, line);
			                                MyCount++;	
			                                Log.d(LOG, "Count receive: "+Integer.toString(MyCount));
			                                out.println("|I readed You");
			                                out.flush();
			                               
			                                handler.post(new Runnable() {
			                                    @Override
			                                    public void run() {
			                                    	//Log.d(LOG, "was write");	
			                                        // DO WHATEVER YOU WANT TO THE FRONT END
			                                        // THIS IS WHERE YOU CAN BE CREATIVE
			                                    }
			                                });
		                                
										}
									 } catch (Exception e) {
				                            handler.post(new Runnable() {
				                                @Override
				                                public void run() {
				                                	Log.e(LOG, "Oops. Connection interrupted. Please reconnect your phones.");	
				                                   
				                                }
				                            });
				                            e.printStackTrace();
				                        }
	                            	                           	
								}
							}).start();
                            
                            break;
                    }
                } else {
                    handler.post(new Runnable() {
                        @Override
                        public void run() {
                        	Log.e(LOG, "Couldn't detect internet connection.");	
                        }
                    });
                }
            } catch (Exception e) {
                handler.post(new Runnable() {
                    @Override
                    public void run() {
                    	Log.e(LOG, "Error");	
                      
                    }
                });
                e.printStackTrace();
            }
        }
    }
 
    @Override
    protected void onStop() {
        super.onStop();
        try {
             // MAKE SURE YOU CLOSE THE SOCKET UPON EXITING
             serverSocket.close();
         } catch (IOException e) {
             e.printStackTrace();
         }
    }


}

...
Рейтинг: 0 / 0
Sockets
    #38688230
BoJI4er
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BoJI4erкоторая постоянно увеличивается.

ошибка.. не увеличивается а меняется...
...
Рейтинг: 0 / 0
Sockets
    #38688265
Фотография wadman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я пока в твоем коде не разбирался, но:
1. У потока есть приоритет.
2. В андроиде еще есть и сервисы, посмотри в их сторону.
...
Рейтинг: 0 / 0
3 сообщений из 3, страница 1 из 1
Форумы / Android [игнор отключен] [закрыт для гостей] / Sockets
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]