Android模拟器与本地服务器的socket通讯
来源:互联网 发布:雷欧奥特曼mac队员 编辑:程序博客网 时间:2024/05/16 13:41
要注意的问题:
- IP是10.0.2.2,而不是localhost或者127.0.0.1。因为localhost或者127.0.0.1是模拟器自己。
- 注意你是否在AndroidManifest.xml里添加了permission:<uses-permission android:name=”android.permission.INTERNET” />
- 不能在主线程里建立socket连接,建议创建一个新的线程。(本人的解决方法,欢迎讨论)
import java.io.*;import java.net.*;import java.util.Date;public class Server {public static int PORT = 6688;public void run(){ServerSocket listener;try{listener = new ServerSocket(PORT);while(true){System.out.println("The server is running ...");Socket s = listener.accept();InputStream is = s.getInputStream();OutputStream os = s.getOutputStream();service(is,os);s.close();System.out.println("The server is close.");}} catch(Exception e){System.out.println(e);}}public void service(InputStream is,OutputStream os) throws IOException, UnknownHostException{DataInputStream ins = new DataInputStream(is);DataOutputStream ous = new DataOutputStream(os);String input = ins.readUTF();System.out.println(input);ous.writeUTF("The message is received");}public static void main(String[] args){Server s = new Server();s.run();}}
客户端
import java.io.*;import java.net.*;import android.os.Bundle;import android.app.Activity;import android.view.Menu;import android.view.View;import android.view.View.OnClickListener;import android.widget.Button;import android.widget.EditText;import android.widget.Toast;public class MainActivity extends Activity {EditText et1,et2;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);et1=((EditText)findViewById(R.id.editText1));et2=((EditText)findViewById(R.id.editText2));((Button)findViewById(R.id.button1)).setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {(new Thread(new Runnable() { public void run() { client(); }})).start();}});}@Overridepublic boolean onCreateOptionsMenu(Menu menu) {// Inflate the menu; this adds items to the action bar if it is present.getMenuInflater().inflate(R.menu.activity_main, menu);return true;}public void client(){try{Socket s = new Socket("10.0.2.2",6688);DataOutputStream dos = new DataOutputStream(s.getOutputStream());DataInputStream dis = new DataInputStream(s.getInputStream());dos.writeUTF("Hello from client.");String input = dis.readUTF();runOnUiThread(new Runnable() {public void run() {Toast.makeText(getApplicationContext(), input, Toast.LENGTH_LONG).show();}});}catch (Exception e){e.printStackTrace();}}}
- Android模拟器与本地服务器的socket通讯
- Android 模拟器(JAVA)与C++ socket 通讯
- Android 模拟器(JAVA)与C++ socket 通讯(IP设置)
- Android与本地服务器交互,出现的问题【android模拟器无法访问本地的tomcat 】
- 模拟器之间的Socket通讯
- 实现两台Android模拟器之间的Socket通讯
- Android客户端与本地服务器Socket通信
- Android模拟器连接本地服务器
- android模拟器访问本地服务器
- Android模拟器访问本地服务器
- android模拟器连接本地服务器
- Android模拟器访问本地服务器
- Android模拟器无法访问本地服务器
- Android模拟器访问本地服务器
- Android模拟器如何与本地电脑服务器连接
- android socket通讯,PC和模拟器,两个模拟器之间的通信
- android socket通讯,PC和模拟器,两个模拟器之间的通信
- android socket通讯,PC和模拟器,两个模拟器之间的通信
- 堆corruption调试
- 认识CDMS
- Mapping '/var/mobile/Library/Caches/com.apple.keyboards/images/tmp.gcyBAl37' failed: 'Invalid argume
- POSIX线程操作,转的有点乱,将就记录一下
- C++reference~~~
- Android模拟器与本地服务器的socket通讯
- google面试题8
- linux操作系统的安装以及各个目录的作用
- 深入Memcache内部(二)-slab内存分配
- 详解 Spring 3.0 基于 Annotation 的依赖注入实现
- Struts2+hibernate+spring整合时错误
- 如何直接调用dll中的函数
- CDMS功能
- nginx 优化