欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

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

程序员文章站 2024-02-29 14:55:34
本文实例讲述了android使用socket创建简单tcp连接的方法。分享给大家供大家参考,具体如下: 不管是在java还是android编程中,通信都是及其重要的一部分...

本文实例讲述了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相关内容感兴趣的读者可查看本站专题:《android通信方式总结》、《android调试技巧与常见问题解决方法汇总》、《android开发入门与进阶教程》、《android多媒体操作技巧汇总(音频,视频,录音等)》、《android基本组件用法总结》、《android视图view技巧总结》、《android布局layout技巧总结》及《android控件用法总结

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