android 模拟器和电脑服务器端用socket通讯

之前一直会用sockets来实现emulator和PC进行通讯,卡了几天,最后请教其他人终于可以连接了。  错误原因是在IP和端口,IP要用本机IP(在CMD输入ipconfig,注意:每次开机本机IP都不同,ADSL是动态IP),端口用emulator的名称,5554或5556.java sever文件要另外建java工程运行,在android工程运行不了java(run application)

客户端代码:

Java代码

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());

}

}

});

}

}

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代码

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.ServerSocket;

import java.net.Socket;

public class Server implements Runnable

{

public void run()

{

try

{

//创建ServerSocket

ServerSocket serverSocket = new ServerSocket(5554);

while (true)

{

//接受客户端请求

Socket client = serverSocket.accept();

System.out.println("accept");

try

{

//接收客户端消息

BufferedReader in = new BufferedReader(new InputStreamReader(client.getInputStream()));

String str = in.readLine();

System.out.println("read:" + str);

//向服务器发送消息

PrintWriter out = new PrintWriter( new BufferedWriter( new OutputStreamWriter(client.getOutputStream())),true);

out.println("server message");

//关闭流

out.close();

in.close();

}

catch (Exception e)

{

System.out.println(e.getMessage());

e.printStackTrace();

}

finally

{

//关闭

client.close();

System.out.println("close");

}

}

}

catch (Exception e)

{

System.out.println(e.getMessage());

}

}

//main函数,开启服务器

public static void main(String a[])

{

Thread desktopServerThread = new Thread(new Server());

desktopServerThread.start();

}

}

注:博客涉及的源码请在千寻资源库:www.qxzyk.com 下载获取,谢谢支持。

1 楼

peng051410

2011-10-27

真的很谢谢,我现在正在学习android,感谢分享。。。。

android模拟器socket服务端,android 模拟器跟电脑服务器端用socket通讯相关推荐

  1. android socket 服务端,Android socket 服务端

    Android socket 服务端 Android 想在Android 上跑一个 socket 服务端.把在java工程里运行起来的代码直接放到android项目里来,开启线程,创建ServerSo ...

  2. android微信支付服务端,Android 微信支付返回-1

    本地服务端测试是可以拉起微信支付的,但是项目移到服务器上就不行呢?开放平台的app签名已经改了发布版的(签名是通过微信官方给的Gen_Signature_Android.apk获取的),appid没换 ...

  3. android授权新浪微博 服务端,Android 集成新浪微博分享及授权

    本文使用的开发的环境是 eclipse 本文叙述的新浪微博分享及其授权的内容分为两块 : 一 新浪提供的 WeiboSDKDemo 二 嵌入到自己的应用当中去 第一部分 运行成功 WeiboSDKDe ...

  4. Socket服务端向指定客户端发送消息

    Socket服务端向指定客户端发送消息 解决思想 1.项目背景 2.如何上传与下发指令 3.解决方法 4.流程 解决思想 I.指定客户端远程地址是存起来的. II.服务端直接主动发信息给客户端,问题在 ...

  5. 在线登录注册功能(android客户端+javaweb服务端+腾讯云服务器+腾讯云数据库)

    在线登录注册功能(android客户端+javaweb服务端+腾讯云服务器+腾讯云数据库) 完整的项目已上传github仓库,链接在文章最下面 注:笔者在安卓客户端部分写了kotlin语言和java语 ...

  6. 【Android 开发】: Android客户端与服务端之间使用JSON交互数据。

    在前面的两讲中,我们讲解了JSON数据格式的一些基本知识,以及做一些小Demo,这一讲我们在前面的基础上来做一个综合的可扩展的Demo,主要是针对Android客户端解析服务端传递过来的JSON数据. ...

  7. Android搭建WebSocket服务端

    WebSocket简介 WebSocket协议是基于TCP的一种新的网络协议.它实现了浏览器与服务器全双工(full-duplex)通信--允许服务器主动发送信息给客户端.全双工就是指客户端和服务端可 ...

  8. android客户端访问服务端,服务端返回json数据

    json这里选用了fast-json 先看服务端代码如下 package novelserver.servlet;import java.io.IOException; import java.io. ...

  9. Java:socket服务端,socket服务端支持多连接,socket客户端,socket客户端支持发送和接受

    一.Java之socket服务端 新建一个Java工程 命名 给他先创建一个类 在类里面我们做一个main 这里面也需要,创建套接字,IP号,端口号 但是java中有一个类         Serve ...

最新文章

  1. 多尺度目标检测--Scale-Aware Trident Networks for Object Detection
  2. C++知识点22——使用C++标准库(顺序容器list的初始化、赋值、访问、交换、添加、删除与迭代器失效)
  3. MS SQL “ 无法启动分布式事务“问题的解决思路
  4. cocos2dx 调用oc java_cocos2dx 调用浏览器打开网址
  5. 发达国家农业模式-国际农民丰收节贸易会:全球农业未来
  6. GridView点击行任意位置设为选择状态
  7. dsoFramer 的原代码
  8. J Red-Black Paths(ICPC网络赛第一场)
  9. 第6步 项目包结构
  10. spring管理的类如何调用非spring管理的类
  11. c++ websocket客户端_websocket使用
  12. mongodb 字段出现次数_MongoDB数据库
  13. 复数基础—— i = 根号 -1 _3
  14. string与stream互相转换
  15. Python实现简单的人脸打卡系统
  16. mybatis 高级映射 - 一对多查询 - collection
  17. Domino(群组工作软件)
  18. 横向时间轴(进度条)
  19. STM32接收红外遥控数据
  20. dedecms织梦后台模板layui框架

热门文章

  1. python中wb是什么意思_python 中wb
  2. IDEA使用gitee 史诗级保姆教程
  3. JMockit简单使用
  4. Kafka 集群安装
  5. 数据库系统的三级模式概念
  6. 安装autojump
  7. NOKIA 刷机 6680
  8. Wizpert-激励性帮助
  9. 【MAPBOX基础功能】26、mapbox地图基础工具 -定位到指定的位置
  10. [BZOJ 2626]JZPFAR