当前位置: 移动技术网 > 移动技术>移动开发>Android > Android使用socket创建简单TCP连接的方法

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

2019年07月24日  | 移动技术网移动技术  | 我要评论

本文实例讲述了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程序设计有所帮助。

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网