2010-12-11 3 views
0

Theres ein Kerl in meinem Job, der eine Verbindung zu einem Socket durch C mithilfe von Strukturen von Bytes herstellt. Wie kann ich das gleiche in Android/Java machen? Ich weiß, dass ich mehr Informationen hinzufügen kann, aber ich denke, dass ich einige Antworten brauche, um mehr in den richtigen Punkt zu entwickeln.Sockets & Windows-Dienst

Vielen Dank im Voraus

Antwort

1

Lesen Sie auf der java.net.Socket-Klasse.

Upd: getOutputStream() gibt Ihnen eine OutputStream-Instanz. Sie können Byte-Arrays direkt in sie schreiben. Um C-Datentypen zu simulieren, müssen Sie Ihre Variablen mithilfe von Verschiebe- und Maskenoperatoren in Bytes zerlegen. Zum Beispiel, ein int zu schreiben (vorausgesetzt, es ist Little-Endian auf dem Draht), zu verwenden:

int n; 
MyOutStream.write(new byte[]{n&0xff, (n>>8)&0xff, (n>>16)&0xff, (n>>24)&0xff}); 

Bei Strings verwenden toByteArray() mit der entsprechenden Codierung ("US-ASCII" ist nicht sicher).

Es gibt auch die DataOutputStream-Klasse, die das gleiche für Sie tun kann, aber IIRC schreibt einen kleinen Header vor den Daten, so dass die Drahtdaten mit dem bestehenden Protokoll inkompatibel sind.

+0

Ich bin erfolgreich die Verbindung und arbeiten mit IO, aber ich weiß nicht, wie Pakete von Bytes zu senden. –

+0

Siehe das Update. –

+0

In Ordnung, danke! kranker Test –