亲宝软件园·资讯

展开

Android使用socket创建简单TCP连接 Android使用socket创建简单TCP连接的方法

HLbig 人气:0
想了解Android使用socket创建简单TCP连接的方法的相关内容吗,HLbig在本文为您仔细讲解Android使用socket创建简单TCP连接的相关知识和一些Code实例,欢迎阅读和指正,我们先划重点:Android,socket,TCP,下面大家一起来学习吧。

本文实例讲述了Android使用socket创建简单TCP连接的方法。分享给大家供大家参考,具体如下:

不管是在Java还是Android编程中,通信都是及其重要的一部分。有连接的socket编程,重要性自然毋庸置疑。

这里以一个简单的demo演示一个最基本的socket编程。

先写服务端。服务端是Java代码。笔者懒得装eclipse等编程软件,就是直接notepad编程,dos运行的。服务端一般是新建一个绑定端口的serversocket,监听客户端请求(死循环监听)。当接收到客户端消息时,读取消息、处理,然后返回给客户端。代码如下:(已有较详尽注释)

public class SimpleServer {
  /**
   * @param args
   * @throws IOException
   */
  public static void main(String[] args) throws IOException {
    // TODO Auto-generated method stub
    //创建一个ServerSocket,用于监听客户端socket的连接请求
    ServerSocket ss=new ServerSocket(50069);
    //采用循环不断接受来自客户端的请求,服务器端也对应产生一个Socket
  while(true){
  Socket s = ss.accept();
  //接收客户端消息
  BufferedReader br = new BufferedReader(new InputStreamReader(s.getInputStream()));
  System.out.println("-------------------------");
  String tt = br.readLine();
  String res = "server 回复了你的"+tt;
  System.out.println(res);
  OutputStream os=s.getOutputStream();
  os.write(res.getBytes("UTF-8"));
  System.out.println("-------------------------");
  //os.close();
  s.shutdownOutput();
  s.close();
  }
}}

客户端是新建一个绑定IP(服务端)和端口号(和服务端一样)的socket,然后以流的形式发送内容给服务端(这里的发送要注意给出结束标志,如半关闭),并读取发回的内容(此处的读取是一个等待过程,也就是说,在很长一段时间内,如果服务端发回消息则读取,没有发回则会等待,也就是阻塞)。最后关闭socket。代码如下:

public class MainActivity extends Activity implements Runnable{
  EditText show;
  @Override
  protected void onCreate(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    show = (EditText) findViewById(R.id.edit1);
    MainActivity myThread = new MainActivity();
    Thread thread = new Thread(myThread);
    thread.start();
  }
  @Override
  public void run() {
    try {
      Socket socket = new Socket("192.168.145.96", 50069);
      //设置10秒之后即认为是超时
      socket.setSoTimeout(10000);
      //发送数据给服务端
      OutputStream outputStream = socket.getOutputStream();
      outputStream.write("hello,server".getBytes("UTF-8"));
      socket.shutdownOutput();
      //读取数据
        BufferedReader br = new BufferedReader(new InputStreamReader(socket.getInputStream()));
        String line = br.readLine();
        //打印读取到的数据
        Log.e("MainActivity", ">>>>>>>>>>>>>>>>>>>>>>>>>" + line);
      br.close();
      socket.close();
    } catch (UnknownHostException e) {
      // TODO Auto-generated catch block
      Log.e("UnknownHost", "来自服务器的数据");
      e.printStackTrace();
    } catch (IOException e) {
      Log.e("IOException", "来自服务器的数据");
      // TODO Auto-generated catch block
      e.printStackTrace();
    }
  }
}

最后,把服务端运行起来,就可以运行客户端进行演示了。

希望本文所述对大家Android程序设计有所帮助。

加载全部内容

相关教程
猜你喜欢
用户评论