- Forum-Beiträge: 4
12.02.2012, 18:22:18 via Website
12.02.2012 18:22:18 via Website
ich bin neu in der Android-App-Programmierung und wollte als erstes einen TCPClienten für einen fertigen TCPServer auf .NET-Basis schreiben. Der Server funktioniert mit verschiedenen Programmen und kann somit als Fehlerquelle ausgeschlossen werden. Leider bekomme ich es nicht hin, dass das Tablet Zeichen zu jeder Zeit empfangen kann. Vielleicht könnt ihr mal über den Code schauen und mir Tips geben, woran das liegen könnte.
2
3import java.io.BufferedReader;
4import java.io.BufferedWriter;
5import java.io.DataOutputStream;
6import java.io.IOException;
7import java.io.InputStreamReader;
8import java.io.OutputStreamWriter;
9import java.io.PrintWriter;
10import java.net.Socket;
11import java.net.UnknownHostException;
12
13
14
15import android.app.Activity;
16import android.app.AlertDialog;
17import android.os.Bundle;
18import android.view.View;
19import android.view.View.OnClickListener;
20import android.widget.Button;
21import android.widget.EditText;
22import android.widget.ScrollView;
23import android.widget.TextView;
24
25public class HelloWorkshopActivity extends Activity implements OnClickListener, Runnable {
26 /** Called when the activity is first created. */
27
28 private TextView _lblMessages;
29 private ScrollView _scrollMessages;
30 private HelloWorkshopActivity x;
31
32 private Button ConnectButton;
33 private Button SendButton;
34 private Button DisconnectButton;
35
36 public void onCreate(Bundle savedInstanceState) {
37 super.onCreate(savedInstanceState);
38 setContentView(R.layout.main);
39 ConnectButton = (Button)findViewById(R.id.Connect);
40 ConnectButton.setOnClickListener(this);
41 SendButton = (Button)findViewById(R.id.Send);
42 SendButton.setOnClickListener(this);
43 DisconnectButton = (Button)findViewById(R.id.Disconnect);
44 DisconnectButton.setOnClickListener(this);
45
46 _lblMessages = (TextView) findViewById(R.id.lblMessages);
47 _scrollMessages = (ScrollView)findViewById(R.id.scrollMessages);
48 _addMessage("HALLO");
49 _addMessage("TEST");
50 }
51
52 @Override
53 public void onClick(View v) {
54 EditText nameField = (EditText) findViewById(R.id.name_field);
55 String name = nameField.getText().toString();
56 if (name.length() == 0) {
57 new AlertDialog.Builder(this)
58 .setMessage(R.string.error_name_missing)
59 .setNeutralButton(R.string.error_ok, null)
60 .show();
61 return;
62 }
63 if (v == ConnectButton){
64 try {
65 connectTOTCP();
66 }
67 catch (Exception e ){
68 new AlertDialog.Builder(this)
69 .setMessage("FEHLER TCPCONNECT")
70 .setNeutralButton(R.string.error_ok, null)
71 .show();
72 }
73 }
74 if (v == SendButton){
75 try {
76 out.write(name);
77 out.flush();
78 }
79 catch (IOException e) {
80 }
81 }
82 if (v == DisconnectButton){
83 try {
84 out.write("/DISCONNECT");
85 out.flush();
86 } catch (IOException e) {
87 // TODO Auto-generated catch block
88 //e.printStackTrace();
89 }
90 }
91 }
92
93 public Socket clientSocket;
94 public BufferedReader in;
95 public BufferedWriter out;
96
97 public void connectTOTCP() {
98 try {
99 clientSocket = new Socket("192.168.2.115", 1522);
100 in = new BufferedReader(new InputStreamReader(clientSocket.getInputStream()));
101 out = new BufferedWriter(new OutputStreamWriter(clientSocket.getOutputStream()));
102 out.write("/CONNECT|CLIENTAndroid");
103 out.flush();
104 Thread t1 = new Thread(this);
105 t1.start();
106
107 } catch (UnknownHostException e) {
108 new AlertDialog.Builder(this)
109 .setMessage("FEHLER HIer")
110 .setNeutralButton(R.string.error_ok, null)
111 .show();
112 } catch (IOException e) {
113 new AlertDialog.Builder(this)
114 .setMessage("FEHLER da")
115 .setNeutralButton(R.string.error_ok, null)
116 .show();
117 }
118
119 }
120
121 public void run(){
122 EditText nameField = (EditText) findViewById(R.id.name_field);
123 String name = nameField.getText().toString();
124 try{
125 while (true){
126 String s = in.readLine();
127 _addMessage(s);
128 out.write(s);
129 }
130 }
131 catch (Exception e){
132 //nameField.setText("FEJLER RECEIVE");
133 }
134 }
135
136
137 private void _addMessage(String text)
138 {
139 String messages = _lblMessages.getText().toString();
140 messages += text + "\n";
141 _lblMessages.setText(messages);
142 _scrollMessages.fullScroll(View.FOCUS_DOWN);
143 }
144
145}
Ich habe alles mögliche versucht, aber irgendwie will nichts funktionieren. Wenn jemand ein anderes Beispiel hat, bei dem es funktioniert, bitte zeigen.
Mir reicht es schon wenn ich weiss, dass die Zeichen empfangen werden. Die Art und Weise, wie sie angezeigt werden, ist zunächst vollkommen egal.
Dann habe ich noch ein andere grundlegenderere Frage:
Ich benutze als Entwicklungsumgeben Eclipse mit der ANDROID SDK. Kann ich irgendwie auch Haltepunkte etc einfügen, um zu sehen, wo ich im ausführenden Programm bin?
Ich bin für jede Hilfe dankbar
Empfohlener redaktioneller Inhalt
Mit Deiner Zustimmung wird hier ein externer Inhalt geladen.
Mit Klick auf den oben stehenden Button erklärst Du Dich damit einverstanden, dass Dir externe Inhalte angezeigt werden dürfen. Dabei können personenbezogene Daten an Drittanbieter übermittelt werden. Mehr Infos dazu findest Du in unserer Datenschutzerklärung.