Android客户端和服务器端编程

Android客户端和服务器端编程,第1张

概述我正在尝试运行我在网上找到的服务器端客户端示例.这是服务器:publicclassServerActivityextendsActivity{privateTextViewserverStatus;privateTextViewserverStatus2;//DEFAULTIPpublicstaticStringSERVERIP="10.100.102.15";

我正在尝试运行我在网上找到的服务器端和客户端示例.
这是服务器:

public class ServerActivity extends Activity {      private TextVIEw serverStatus;      private TextVIEw serverStatus2;      // DEFAulT IP      public static String SERVERIP = "10.100.102.15";      // DESIGNATE A PORT      public static final int SERVERPORT = 8080;      private Handler handler = new Handler();      private ServerSocket serverSocket;      @OverrIDe      protected voID onCreate(Bundle savedInstanceState) {          super.onCreate(savedInstanceState);          setContentVIEw(R.layout.activity_server);          serverStatus = (TextVIEw) findVIEwByID(R.ID.server_status);          serverStatus2 = (TextVIEw) findVIEwByID(R.ID.server_status2);          SERVERIP = getLocalipAddress();          Thread fst = new Thread(new ServerThread());          fst.start();      }      public class ServerThread implements Runnable {          public voID run() {              try {                  if (SERVERIP != null) {                      handler.post(new Runnable() {                          @OverrIDe                          public voID run() {                              serverStatus                                      .setText("Listening on IP: " + SERVERIP);                          }                      });                      serverSocket = new ServerSocket(SERVERPORT);                      while (true) {                          // ListEN FOR INCOMING CLIENTS                          Socket clIEnt = serverSocket.accept();                          handler.post(new Runnable() {                              @OverrIDe                              public voID run() {                                  serverStatus2.setText("Connected.");                              }                          });                          try {                              BufferedReader in = new BufferedReader(                                      new inputStreamReader(                                              clIEnt.getinputStream()));                              String line = null;                              while ((line = in.readline()) != null) {                                  Log.d("ServerActivity", line);                                  handler.post(new Runnable() {                                      @OverrIDe                                      public voID run() {                                          // DO WHATEVER YOU WANT TO THE FRONT END                                          // THIS IS WHERE YOU CAN BE CREATIVE                                      }                                  });                              }                              break;                          } catch (Exception e) {                              handler.post(new Runnable() {                                  @OverrIDe                                  public voID run() {                                      serverStatus                                              .setText("Oops. Connection interrupted. Please reconnect your phones.");                                  }                              });                              e.printstacktrace();                          }                      }                  } else {                      handler.post(new Runnable() {                          @OverrIDe                          public voID run() {                              serverStatus                                      .setText("Couldn't detect internet connection.");                          }                      });                  }              } catch (final Exception e) {                  handler.post(new Runnable() {                      @OverrIDe                      public voID run() {                          serverStatus.setText("Error" + e.getMessage());                      }                  });                  e.printstacktrace();              }          }      }      // GETS THE IP ADDRESS OF YOUR PHONE'S NETWORK      private String getLocalipAddress() {          try {              for (Enumeration<NetworkInterface> en = NetworkInterface                      .getNetworkInterfaces(); en.hasMoreElements();) {                  NetworkInterface intf = en.nextElement();                  for (Enumeration<InetAddress> enumIpAddr = intf                          .getInetAddresses(); enumIpAddr.hasMoreElements();) {                      InetAddress inetAddress = enumIpAddr.nextElement();                      if (!inetAddress.isLoopbackAddress()) {                          return inetAddress.getHostAddress().toString();                      }                  }              }          } catch (SocketException ex) {              Log.e("ServerActivity", ex.toString());          }          return null;      }      @OverrIDe      protected voID onStop() {          super.onStop();          try {              // MAKE SURE YOU CLOSE THE SOCKET UPON EXITING              serverSocket.close();          } catch (IOException e) {              e.printstacktrace();          }      }  }

这是客户的代码:

public class ClIEntActivity extends Activity {          private EditText serverIp;          private button connectPhones;          private String serverIpAddress = "";          private boolean connected = false;          //private Handler handler = new Handler();          @OverrIDe          protected voID onCreate(Bundle savedInstanceState) {              super.onCreate(savedInstanceState);              setContentVIEw(R.layout.activity_clIEnt);              serverIp = (EditText) findVIEwByID(R.ID.server_ip);              connectPhones = (button) findVIEwByID(R.ID.connect_phones);              connectPhones.setonClickListener(connectListener);          }          private OnClickListener connectListener = new OnClickListener() {              @OverrIDe              public voID onClick(VIEw v) {                  if (!connected) {                      serverIpserverIpAddress = serverIp.getText().toString();                      if (!serverIpAddress.equals("")) {                          Thread cThread = new Thread(new ClIEntThread());                          cThread.start();                      }                  }              }          };          public class ClIEntThread implements Runnable {              public voID run() {                  try {                      InetAddress serverAddr = InetAddress.getByname(serverIpAddress);                      Log.d("ClIEntActivity", "C: Connecting...");                      Socket socket = new Socket(serverAddr,                              8080);                      connected = true;                      while (connected) {                          try {                              Log.d("ClIEntActivity", "C: Sending command.");                              PrintWriter out = new PrintWriter(                                      new BuffereDWriter(new OutputStreamWriter(                                              socket.getoutputStream())), true);                              // WHERE YOU ISSUE THE COMMANDS                              out.println("hey Server!");                              Log.d("ClIEntActivity", "C: Sent.");                          } catch (Exception e) {                              Log.e("ClIEntActivity", "S: Error", e);                          }                      }                      socket.close();                      Log.d("ClIEntActivity", "C: Closed.");                  } catch (Exception e) {                      Log.e("ClIEntActivity", "C: Error", e);                      connected = false;                  }              }          }      }

当在同一个eclipse模拟器上运行上面的命令时,服务器抛出异常“Socket Closed”,甚至没有达到while循环“while(true)”.有人知道为什么吗?

这是控制台的输出:

AndroID Launch!adb is running normally.Performing com.example.server.ServerActivity activity launchautomatic Target Mode: using existing emulator 'emulator-5554' running compatible AVD 'androID2.3'Uploading server.apk onto device 'emulator-5554'Installing server.apk...Success!Starting activity com.example.server.ServerActivity on device emulator-5554ActivityManager: Starting: Intent { act=androID.intent.action.MAIN cat=[androID.intent.category.LAUNCHER] cmp=com.example.server/.ServerActivity }------------------------------AndroID Launch!adb is running normally.Performing com.example.clIEnt.ClIEntActivity activity launchautomatic Target Mode: using existing emulator 'emulator-5554' running compatible AVD 'androID2.3'Application already deployed. No need to reinstall.Starting activity com.example.clIEnt.ClIEntActivity on device emulator-5554ActivityManager: Starting: Intent { act=androID.intent.action.MAIN cat=[androID.intent.category.LAUNCHER] cmp=com.example.clIEnt/.ClIEntActivity }

这是LogCat输出:

08-08 13:04:38.165: D/ClIEntActivity(360): C: Connecting...08-08 13:04:38.176: E/ClIEntActivity(360): C: Error08-08 13:04:38.176: E/ClIEntActivity(360): java.net.ConnectException: /10.0.2.15:50907 - Connection refused08-08 13:04:38.176: E/ClIEntActivity(360):  at org.apache.harmony.luni.net.PlainSocketImpl.connect(PlainSocketImpl.java:207)08-08 13:04:38.176: E/ClIEntActivity(360):  at org.apache.harmony.luni.net.PlainSocketImpl.connect(PlainSocketImpl.java:183)08-08 13:04:38.176: E/ClIEntActivity(360):  at java.net.socket.startupSocket(Socket.java:705)08-08 13:04:38.176: E/ClIEntActivity(360):  at java.net.socket.<init>(Socket.java:263)08-08 13:04:38.176: E/ClIEntActivity(360):  at com.example.clIEnt.ClIEntActivity$ClIEntThread.run(ClIEntActivity.java:58)08-08 13:04:38.176: E/ClIEntActivity(360):  at java.lang.Thread.run(Thread.java:1019)08-08 13:04:40.456: W/IinputConnectionWrapper(360): showStatusIcon on inactive > > > inputConnection

解决方法:

解决了IT,http://developer.android.com/tools/devices/emulator.html.
问题是默认的androID模拟器实例只能与自身和以太网交互,因此不同的实例不能相互联网.
如果要这样做,首先必须在实例中设置重定向.
阅读本页它有点像…很多:D

总结

以上是内存溢出为你收集整理的Android客户端和服务器端编程全部内容,希望文章能够帮你解决Android客户端和服务器端编程所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/1106894.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-28
下一篇2022-05-28

发表评论

登录后才能评论

评论列表(0条)

    保存