android 模拟器和PC用sockets通讯

简介:
 之前一直会用sockets来实现emulator和PC进行通讯,卡了几天,最后请教其他人终于可以连接了。  错误原因是在IP和端口,IP要用本机IP(在CMD输入ipconfig,注意:每次开机本机IP都不同,ADSL是动态IP),端口用emulator的名称,5554或5556.java sever文件要另外建java工程运行,在android工程运行不了java(run application)
客户端代码:
Java代码 复制代码  收藏代码
  1. package com.yarin.android.Examples_08_04;   
  2.   
  3. import java.io.BufferedReader;   
  4. import java.io.BufferedWriter;   
  5. import java.io.InputStreamReader;   
  6. import java.io.OutputStreamWriter;   
  7. import java.io.PrintWriter;   
  8. import java.net.InetAddress;   
  9. import java.net.Socket;   
  10.   
  11. import android.app.Activity;   
  12. import android.os.Bundle;   
  13. import android.util.Log;   
  14. import android.view.View;   
  15. import android.view.View.OnClickListener;   
  16. import android.widget.Button;   
  17. import android.widget.EditText;   
  18. import android.widget.TextView;   
  19.   
  20. public class Activity01 extends Activity   
  21. {   
  22.     private final String        DEBUG_TAG   = "Activity01";   
  23.        
  24.     private TextView    mTextView=null;   
  25.     private EditText    mEditText=null;   
  26.     private Button      mButton=null;   
  27.     /** Called when the activity is first created. */  
  28.     @Override  
  29.     public void onCreate(Bundle savedInstanceState)   
  30.     {   
  31.         super.onCreate(savedInstanceState);   
  32.         setContentView(R.layout.main);   
  33.            
  34.         mButton = (Button)findViewById(R.id.Button01);   
  35.         mTextView=(TextView)findViewById(R.id.TextView01);   
  36.         mEditText=(EditText)findViewById(R.id.EditText01);   
  37.            
  38.         //登陆   
  39.         mButton.setOnClickListener(new OnClickListener()   
  40.         {   
  41.             public void onClick(View v)   
  42.             {   
  43.                 Socket socket = null;   
  44.                 String message = mEditText.getText().toString() + "\r\n";    
  45.                 try    
  46.                 {      
  47.                     //创建Socket   
  48.                     socket = new Socket("116.29.27.138",5554); //查看本机IP,每次开机都不同   
  49.                     //socket=new Socket("192.168.1.110",50000);   
  50.                     //向服务器发送消息   
  51.                     PrintWriter out = new PrintWriter( new BufferedWriter( new OutputStreamWriter(socket.getOutputStream())),true);         
  52.                     out.println(message);    
  53.                        
  54.                     //接收来自服务器的消息   
  55.                     BufferedReader br = new BufferedReader(new InputStreamReader(socket.getInputStream()));    
  56.                     String msg = br.readLine();    
  57.                        
  58.                     if ( msg != null )   
  59.                     {   
  60.                         mTextView.setText(msg);   
  61.                     }   
  62.                     else  
  63.                     {   
  64.                         mTextView.setText("数据错误!");   
  65.                     }   
  66.                     //关闭流   
  67.                     out.close();   
  68.                     br.close();   
  69.                     //关闭Socket   
  70.                     socket.close();    
  71.                 }   
  72.                 catch (Exception e)    
  73.                 {   
  74.                     // TODO: handle exception   
  75.                     Log.e(DEBUG_TAG, e.toString());   
  76.                 }   
  77.             }   
  78.         });   
  79.     }   
  80. }  
package com.yarin.android.Examples_08_04;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.net.InetAddress;
import java.net.Socket;

import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;

public class Activity01 extends Activity
{
	private final String		DEBUG_TAG	= "Activity01";
	
	private TextView	mTextView=null;
	private EditText	mEditText=null;
	private Button		mButton=null;
	/** Called when the activity is first created. */
	@Override
	public void onCreate(Bundle savedInstanceState)
	{
		super.onCreate(savedInstanceState);
		setContentView(R.layout.main);
		
		mButton = (Button)findViewById(R.id.Button01);
		mTextView=(TextView)findViewById(R.id.TextView01);
		mEditText=(EditText)findViewById(R.id.EditText01);
		
		//登陆
		mButton.setOnClickListener(new OnClickListener()
		{
			public void onClick(View v)
			{
				Socket socket = null;
				String message = mEditText.getText().toString() + "\r\n"; 
				try 
				{	
					//创建Socket
					socket = new Socket("116.29.27.138",5554); //查看本机IP,每次开机都不同
					//socket=new Socket("192.168.1.110",50000);
					//向服务器发送消息
					PrintWriter out = new PrintWriter( new BufferedWriter( new OutputStreamWriter(socket.getOutputStream())),true);      
					out.println(message); 
					
					//接收来自服务器的消息
					BufferedReader br = new BufferedReader(new InputStreamReader(socket.getInputStream())); 
					String msg = br.readLine(); 
					
					if ( msg != null )
					{
						mTextView.setText(msg);
					}
					else
					{
						mTextView.setText("数据错误!");
					}
					//关闭流
					out.close();
					br.close();
					//关闭Socket
					socket.close(); 
				}
				catch (Exception e) 
				{
					// TODO: handle exception
					Log.e(DEBUG_TAG, e.toString());
				}
			}
		});
	}
}

服务器端代码:
Java代码 复制代码  收藏代码
  1. package com.yarin.android.Examples_08_04;   
  2.   
  3. import java.io.BufferedReader;   
  4. import java.io.BufferedWriter;   
  5. import java.io.InputStreamReader;   
  6. import java.io.OutputStreamWriter;   
  7. import java.io.PrintWriter;   
  8. import java.net.ServerSocket;   
  9. import java.net.Socket;   
  10.   
  11. public class Server implements Runnable   
  12. {   
  13.     public void run()   
  14.     {   
  15.         try  
  16.         {   
  17.             //创建ServerSocket   
  18.             ServerSocket serverSocket = new ServerSocket(5554);   
  19.             while (true)   
  20.             {   
  21.                 //接受客户端请求   
  22.                 Socket client = serverSocket.accept();   
  23.                 System.out.println("accept");   
  24.                 try  
  25.                 {   
  26.                     //接收客户端消息   
  27.                     BufferedReader in = new BufferedReader(new InputStreamReader(client.getInputStream()));   
  28.                     String str = in.readLine();   
  29.                     System.out.println("read:" + str);     
  30.                     //向服务器发送消息   
  31.                     PrintWriter out = new PrintWriter( new BufferedWriter( new OutputStreamWriter(client.getOutputStream())),true);         
  32.                     out.println("server message");    
  33.                     //关闭流   
  34.                     out.close();   
  35.                     in.close();   
  36.                 }   
  37.                 catch (Exception e)   
  38.                 {   
  39.                     System.out.println(e.getMessage());   
  40.                     e.printStackTrace();   
  41.                 }   
  42.                 finally  
  43.                 {   
  44.                     //关闭   
  45.                     client.close();   
  46.                     System.out.println("close");   
  47.                 }   
  48.             }   
  49.         }   
  50.         catch (Exception e)   
  51.         {   
  52.             System.out.println(e.getMessage());   
  53.         }   
  54.     }   
  55.     //main函数,开启服务器   
  56.     public static void main(String a[])   
  57.     {   
  58.         Thread desktopServerThread = new Thread(new Server());   
  59.         desktopServerThread.start();   
  60.     }   
  61. }  
相关文章
|
2月前
|
移动开发 前端开发 Android开发
【02】建立各项目录和页面标准化产品-vue+vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
【02】建立各项目录和页面标准化产品-vue+vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
287 12
【02】建立各项目录和页面标准化产品-vue+vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
|
2月前
|
移动开发 JavaScript 应用服务中间件
【06】优化完善落地页样式内容-精度优化-vue加vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
【06】优化完善落地页样式内容-精度优化-vue加vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
236 5
【06】优化完善落地页样式内容-精度优化-vue加vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
|
2月前
|
移动开发 Rust JavaScript
【01】首页建立-vue+vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
【01】首页建立-vue+vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
579 4
【01】首页建立-vue+vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
|
2月前
|
移动开发 Android开发
【03】建立隐私关于等相关页面和内容-vue+vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
【03】建立隐私关于等相关页面和内容-vue+vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
146 0
|
3月前
|
存储 API Android开发
【02】完整的安卓二次商业实战-配置gradle-构建打包原生安卓项目-调试本地运行模拟器-优雅草伊凡
【02】完整的安卓二次商业实战-配置gradle-构建打包原生安卓项目-调试本地运行模拟器-优雅草伊凡
193 4
【02】完整的安卓二次商业实战-配置gradle-构建打包原生安卓项目-调试本地运行模拟器-优雅草伊凡
|
4月前
|
存储 Web App开发 Ubuntu
手机变PC:给安卓手机刷Ubuntu Touch系统
至此,魅族PRO 5刷入Ubuntu Touch即完成了。 魅族PRO 5的Ubuntu Touch的开机画面如下:
965 0
|
10月前
|
安全 Android开发 数据安全/隐私保护
Cellebrite UFED 4PC 7.71 (Windows) - Android 和 iOS 移动设备取证软件
Cellebrite UFED 4PC 7.71 (Windows) - Android 和 iOS 移动设备取证软件
457 12
Cellebrite UFED 4PC 7.71 (Windows) - Android 和 iOS 移动设备取证软件
|
10月前
|
缓存 Java 测试技术
【01】噩梦终结flutter配安卓android鸿蒙harmonyOS 以及next调试环境配鸿蒙和ios真机调试环境-flutter项目安卓环境配置-gradle-agp-ndkVersion模拟器运行真机测试环境-本地环境搭建-如何快速搭建android本地运行环境-优雅草卓伊凡-很多人在这步就被难倒了
【01】噩梦终结flutter配安卓android鸿蒙harmonyOS 以及next调试环境配鸿蒙和ios真机调试环境-flutter项目安卓环境配置-gradle-agp-ndkVersion模拟器运行真机测试环境-本地环境搭建-如何快速搭建android本地运行环境-优雅草卓伊凡-很多人在这步就被难倒了
1235 3
【01】噩梦终结flutter配安卓android鸿蒙harmonyOS 以及next调试环境配鸿蒙和ios真机调试环境-flutter项目安卓环境配置-gradle-agp-ndkVersion模拟器运行真机测试环境-本地环境搭建-如何快速搭建android本地运行环境-优雅草卓伊凡-很多人在这步就被难倒了
|
网络协议 Shell 网络安全
解决两个 Android 模拟器之间无法网络通信的问题
让同一个 PC 上运行的两个 Android 模拟器之间能相互通信,出(qiong)差(ren)的智慧。
245 3
|
开发工具 Android开发
解决夜神模拟器与Android studio自动断开的问题
解决夜神模拟器与Android studio自动断开的问题
703 1