- Admin
- Forum-Beiträge: 11.284
24.03.2013, 12:41:21 via Website
24.03.2013 12:41:21 via Website
ich will eine TCP Connection asyncron machen,da ich nebenbei auch noch c# programmiere will eich ein Server Client System machen.
Ich habe kiene Ahnung wie das in Java geht.
Ich bekomme zwar schon Daten über TCP Connection aber jetzt wil ich das ganze asynchon machen.
Miene TCP Connection CLass: (bitte nicht so sehr auf die Klammern achten hatte ein Formatierungsproblem)
2
3public class TCPClient extends Activity{
4
5 Context mContext; // Lege Variablen an
6 TCPActivity tcp;
7 Socket socket;
8 PrintWriter out = null;
9 BufferedReader in = null;
10
11
12
13 public TCPClient(Context c,TCPActivity tcpc)
14 {
15 tcp = tcpc; // Setze TCPActivity (Aktivity, von der diese Klasse aufgerufen wird).
16 mContext = c; // Setze context
17
18
19 }
20
21
22
23
24 public void connectSocket(){
25
26 try {
27
28
29 InetAddress serverAddr = InetAddress.getByName("192.168.0.102"); // Lege IP adresse an
30 socket = new Socket(serverAddr, 4444); // Verbinde mit Server (IP oben angegeben) und einem bestimmten ServerPort
31
32 }
33 catch (final UnknownHostException e) { // Falls der Host nicht extstiert
34 // TODO Auto-generated catch block
35 Log.e("TCP", "C: UnknownHostException", e);
36 e.printStackTrace();
37 }
38
39
40
41
42 catch(final Exception e) // oder sonst etwas nicht stimmt
43 {
44
45 Log.e("TCP", "C: Exception", e);
46 //Toast.makeText(mContext, "Error : " + e.toString(), Toast.LENGTH_LONG).show();
47 }
48
49
50 }
51
52
53
54 }
55
56
57
58
59
60
61
62
63 public void SendMessage(final String message) throws IOException // Anfrage an den Server senden
64 {
65 try {
66
67 Toast.makeText(mContext, "Sending Messsage = " + message, Toast.LENGTH_LONG).show();
68 out = new PrintWriter( new BufferedWriter( new OutputStreamWriter(socket.getOutputStream(), "UTF-8")),true); // Lege outWriter an
69 out.println(message); // Sende die Anfrage
70
71
72
73 Toast.makeText(mContext, "Anfrage gesendet.", Toast.LENGTH_LONG).show();
74 getMessage(); // Warte auf antwort
75
76 }
77 catch(Exception e) { // Falls etwas nicht stimmt
78 Log.d("TCP", "Error"+ e.fillInStackTrace() + e.toString());
79 //Toast.makeText(mContext, "Error" + e.toString(), Toast.LENGTH_LONG).show();
80 }
81 finally
82 {
83
84 //socket.close();
85
86 }
87
88
89
90
91 }
92
93 String finalText;
94
95 public void getMessage() // Warte auf Antwort vom Server !!!Hinweis: Diese Funktion Funktioniert nur, wenn schon eine anfrage an den Server gesendet wurde und sie noch nicht empfangen wurde!
96 {
97
98
99
100
101 try {
102 in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
103 // Warte auf ankommende Antworten
104
105
106 String text = "";
107
108 while ((text = in.readLine()) != null) { // Lese den einkommenden String
109 finalText += text;
110 }
111
112
113
114
115
116
117 tcp.SetText(finalText); // Setze in textView in der Main die Antwort
118 }
119 catch (IOException e) {
120 // TODO Auto-generated catch block
121 e.printStackTrace();
122 } }
123
124
125
126
127 }
128
129
130
131}
PS: Habe mir schon etliche Beispiele angesehen, aber keines hat mir gefallen.
Bitte um antwort
Vielen Dank im Voraus
LG Pascal //It's not a bug, it's a feature.