zoukankan      html  css  js  c++  java
  • Android笔记之Socket编程

    java.net提供了两个类Socket和ServerSocket,分别用来表示双向连接的客户端和服务端。

    1、 Socket构造:

    Socket socket = new Socket(HOST, PORT);

    HOST( ip地址):获取主机的ip,ifconfig查看ip,ping 通验证正确性

    PORT(端口);

    • 每一个端口提供一种特定的服务,只有给出正确的端口,才能获取相应的服务。
    • 0~1023的端口号为系统所保留,例如http服务的端口号是80,telnet服务的端口号为21,ftp为23。所以我们在选择端口号时最好选择大于1023的数,防止发生冲突。
    • 在创建Socket时,如果发生错误,将产生IOException,在程序中必须对其进行处理。所以在创建Socket或ServerSocket时必须捕获或抛出异常。

    2、ServerSocket构造:

    ServerSocket server = newServerSocket(4321);

    Socket socket = server.accept();

    • 该server只能接受一个请求,接收后就退出,实际中的应用是用循环接收。
    • accept()是阻塞函数,即该方法被调用后将等待客户的请求,直到有一个客户启动并请求连接到相同的端口,然后accept()返回一个对应于客户的Socket。这时,客户方和服务方都建立的用于通信的Socket
    • 建立通信后,由各个Socket分别打开各自的输入、输出流。

    3、输入流输出流
    Socket提供了getInputStream()和getOutputStream()方法来得到输入输出流。然后再对输入流输出流进行读写操作,

    对于客户端,调用getInputStream方法即可得到来自服务器的流,调用getOutStream方法可得到向服务器端发送数据的流。

    对于服务器端,得到Socket对象后,调用getInputStream方法即可得到来自客户端的流,调用getOutStream方法可得到向客户端发送数据的流。
     
    关闭Socket和流
    可调用Socket的close()方法进行关闭。在关闭前,应将与Socket相关的所有输入输出流关闭,正着打开,倒着关闭。
     
    4、创建服务器的步骤:
    1, 指定端口实例化一个ServerSocket
    2, 调用ServerSocket的accept方法以在等待连接期间造成阻塞 3, 获取位于该底层Socket的流以进行读写操作 4, 将数据封装成流 5, 对Socket进行读写 6, 关闭打开的流
    5、创建客户端的步骤:
    1, 通过IP地址和端口实例化Socket,请求连接服务器 2, 获取Socket上的流以进行读写
    3, 把流包装进BufferedReader/PrintWriter的实例 4, 对Socket进行读写 5, 关闭打开的流
     
    6、当要监控多个客户端时,可使用类ExecutorService 其对象获取方法:Executors.newCachedThreadPool();
    调用该对象的execute(Runnable command)即可,在未来某个时间执行给定的命令。该命令可能在新的线程、已入池的线程或者正调用的线程中执行,这由 Executor 实现决定

    在android 2.3上设计的下载程序,在android 4.0上运行时报android.os.NetworkOnMainThreadException异常,原来在4.0中,访问网络不能在主程序中进行,有两个方法可以解决,一个是在主程序中增加:

     

     

     

  • 相关阅读:
    实习感悟——从用户中来,到用户中去
    FineUI PK DWZ
    Java入门到精通——工具篇之Maven概述
    信息论的熵
    菜鸟学习Hibernate——一对多关系映射
    StyleCop学习笔记——默认的规则
    StyleCop学习笔记——自定义规则
    StyleCop学习笔记——初识StyleCop
    好博客收藏
    菜鸟学习Hibernate——简单的增、删、改、查操作
  • 原文地址:https://www.cnblogs.com/xingyyy/p/3372196.html
Copyright © 2011-2022 走看看