Senden und empfangen von Daten über UDP-Socket-java android
Ich bin in der Lage, richtig schicke meine Daten über UDP-socket , aber wenn ich Daten empfangen es hält auf warten auf receive-Befehl weiß ich nicht, was ist die Ursache HIERFÜR.
Bitte haben Sie einen Blick auf meinen code unten.
Ich bin in der Lage, richtig empfangen von Daten auf server-Seite von android-Gerät, aber wenn ich das senden von Daten von der server-Seite auf android-Gerät nicht empfangen. aber wenn ich das senden von Daten vom server zu jedem anderen client-e.g PC-Anwendung erhalten und zeigt die Daten richtig an.
class Task implements Runnable {
@Override
public void run() {
try {
String messageStr = "feed";
int server_port = 8888;
InetAddress local = InetAddress.getByName("10.0.2.2");
int msg_length = messageStr.length();
byte[] message = messageStr.getBytes();
DatagramSocket s = new DatagramSocket();
//
DatagramPacket p = new DatagramPacket(message, msg_length, local, server_port);
s.send(p);//properly able to send data. i receive data to server
for (int i = 0; i <= 20; i++) {
final int value = i;
message = new byte[30000];
p = new DatagramPacket(message,message.length );
s.receive(p); //keeps on waiting here but i am sending data back from server, but it never receives
final byte[] data = p.getData();;
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
handler.post(new Runnable() {
@Override
public void run() {
progressBar.setProgress(value);
imageView.setImageBitmap(BitmapFactory.decodeByteArray(data,0,data.length));
}
});
}
}
catch(Exception ex)
{
}
}
}
Ich weiß das ist ein bisschen alt jetzt, aber hast du jemals diese Figur ein? Stecken Sie das selbe problem wie du. Ich bin immer Daten an den server, aber wenn ich Sie senden nichts zurück..
verringern Sie die Größe der Daten für jeden senden, im Fall von UDP, das löste das Problem für mich.
Ich fand es nach einer Weile aus, aber die Größe der Daten ist der gleiche sowohl das senden und empfangen von Ende-ansonsten bekommen Sie abgehackt audio
verringern Sie die Größe der Daten für jeden senden, im Fall von UDP, das löste das Problem für mich.
Ich fand es nach einer Weile aus, aber die Größe der Daten ist der gleiche sowohl das senden und empfangen von Ende-ansonsten bekommen Sie abgehackt audio
InformationsquelleAutor user2539602 | 2013-10-23
Du musst angemeldet sein, um einen Kommentar abzugeben.
Dokumentation in Eclipse:
"
s.receive(p);
"- Befehl blockiert das Gewinde, bis es die Oberfläche Daten oder die timeout-set mit setSoTimeout(timeout) ist vorbei.Habe ich aus 2 Klassen machen meiner Mitteilung geschehen.
Erste UDP-Server:
Sende ich den empfangenen Daten um einen BroadcastReceiver und dort können Sie tun was immer Sie wollen mit den Daten.
Und jetzt meine client Daten zu senden. In diesem code sende ich einen broadcast, aber ich denke es wird kein problem sein den code zu ändern, zum senden an eine direct-IP oder so.
Und hier ist, wie Sie instanziieren die Klassen von Ihrer main-Klasse.
Und hier, wie das senden einer Nachricht mit dem client.
Stoppen die UDP_Server, nur Server.Server_aktiv auf false.
Um die Nachricht über u kann auch schreiben "setMessage(String message)" - methode oder so ähnlich.
Diese 2 Konstanten, erklärte ich in einem anderen .java-Datei (genannt Main). Sie können einfach ersetzen Sie Sie mit den Werten, die Sie wollen, um Sie zu haben.
Wie würden Sie das nennen Main.MainContext.getApplicationContext().sendBroadcast(i); in der ersten Klasse, ohne mit der Main Klasse?
Ich bin nur über "Main", um den Rahmen meiner Anwendung (getApplicationContext()). Könnten Sie schreiben Sie einen Konstruktor für die UDP_Server-Klasse, und übergeben Sie die Rahmen an den Konstruktor übergeben. So etwas wie "öffentliche UDP_Server(Kontext-AppContext)" und speichern Sie dann die Referenz auf den context in eine variable "MyAppContext" in der UDP_Server Klasse. Nachdem Sie dies getan haben, können Sie rufen "MyAppContext.sendBroadcast(i);" und Sie sollten in Ordnung sein. Hier ist ein post, der zeigt, was ich versuche zu erklären: stackoverflow.com/a/16921076/1837824
InformationsquelleAutor Tim
Hier, in diesem Beitrag finden Sie die detaillierten Codes für die Einrichtung Buchse zwischen Geräten oder zwischen zwei Anwendung in der gleichen mobile.
Erstellen Sie zwei Anwendung zum testen folgenden code.
In beiden Anwendung manifest-Datei, fügen Sie unten die Berechtigung
activity_main.xml
UDPClientSocketActivity.java
activity_main.xml
UDPServerSocketActivity.java
InformationsquelleAutor Girish Bhalerao