Android基于TCP和URL协议的网络编程示例【附demo源码下载】

作者:飘走的我 时间:2021-08-26 03:18:55 

本文实例讲述了Android基于TCP和URL协议的网络编程。分享给大家供大家参考,具体如下:

手机本身是作为手机终端使用的,因此它的计算能力,存储能力都是有限的。它的主要优势是携带方便,可以随时打开,而且手机通常总是处于联网状态。因此网络支持对于手机应用非常重要。

Android完全支持JDK本身的TCP,UDP网络通信API,也可以使用ServerSocket,Socket来建立基于TCP/IP协议的网络通信,也可以使用DatagramSocket,Datagrampacket来建立基于UDP协议的网络通信。Android也支持JDK提供的URL,URLConnection等网络通信API。Android还内置了HttpClient,和HttpUrlConnection这样可以非常方便地发送HTTP请求,并获取Http响应。

——基于TCP协议的编程

使用Socket,ServerSocket编程:

使用多线程,handler机制完成网络编程.

注意:由于手机无线上网的IP地址通常都是由移动运营公司动态分配的,一般不会有自己固定的IP地址,因此很少在手机上运行服务器端,服务器端通常运行在有固定IP的服务器上。

——访问网络资源必须放在子线程中
——需要添加访问网络的权限
——IP地址,不能写成127.0.0.1.
——使用Handler机制解析返回的数据
——注意解决乱码问题

——使用URL进行网络编程

——使用URL访问网络资源

URL对象代表统一资源定位符。它是指向互联网中的资源。该资源可以使简单的文件或目录。也可以是对更复杂的对象的引用。

URL的格式:protocol://host:port/resourceName

可以使用构造器创建URL对象,一旦获得URL对象,可以调用如下的方法访问该URL对应的资源:

String getFile():获取URL的资源名
String getHost():获取URL的主机名
String getPath():获取URL的路径部分
int getPort():获取URL的端口号
String getProtocol():获取URL的协议名称
String getQuery():获取URL的查询字符串部分
InputStream url.openStream():打开URL的连接,返回一个读取该资源的InputStream。

代码编写:

1.服务器的编写:

使用Socket和ServerSocket:


public class serverTest {
public static void main(String[] args) {
 try {
   ServerSocket serverSocket=new ServerSocket(7777);
   System.out.println("服务器已经在7777端口上启动了");
   while (true) {
     //有阻塞的功能,拿不到socket下面的方法也不会执行
     Socket socket=serverSocket.accept();
     System.out.println("有客户端发出请求了");
     new ServerThread(socket).start();
   }
 } catch (Exception e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
 }
}
}

ServerThread继承Thread:


public class ServerThread extends Thread{
 private Socket socket;
 OutputStream outputStream;
 public ServerThread(Socket socket) {
   this.socket=socket;
 }
 @Override
 public void run() {
   // TODO Auto-generated method stub
   try {
     outputStream=socket.getOutputStream();
     outputStream.write(("服务器端的时间"+new Date()).getBytes("UTF-8"));
     outputStream.flush();
     outputStream.close();
   } catch (Exception e) {
     // TODO Auto-generated catch block
     e.printStackTrace();
   }
   super.run();
 }
}

2.客户端的编写:

关键代码:


public void click(View view){
 new Thread(){
   public void run() {
     try {
       //客户端从服务端获取数据
       Socket client=new Socket("169.254.244.141", 7777);
       BufferedReader bufferedReader=
           new BufferedReader
           (new InputStreamReader
               (client.getInputStream()));
       String text=bufferedReader.readLine();
       //tv.setText(text);
       //线程复用
       Message msg= Message.obtain();
       msg.what=0x123;
       msg.obj=text;
       handler.sendMessage(msg);
     } catch (Exception e) {
       // TODO Auto-generated catch block
       e.printStackTrace();
     }
   };
 }.start();
}

从服务器端得到时间~

效果图如下:

Android基于TCP和URL协议的网络编程示例【附demo源码下载】

附:完整实例代码点击此处本站下载

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

来源:http://blog.csdn.net/qq_33642117/article/details/51872377

标签:Android,TCP,URL,网络编程
0
投稿

猜你喜欢

  • 关于Tensorflow分布式并行策略

    2024-01-02 09:39:28
  • Python对象与json数据的转换问题实例详解

    2023-10-27 22:08:39
  • python回调函数的使用方法

    2023-05-28 02:50:55
  • Go语言实现字符串切片赋值的方法小结

    2024-02-01 14:30:19
  • 详解PHP结构型设计模式之桥接模式Bridge Pattern

    2023-05-25 06:58:55
  • python入门基础之用户输入与模块初认识

    2022-08-13 01:10:21
  • 如何过滤中国站长站(chianz)文章干扰码

    2008-01-04 20:14:00
  • python之模拟鼠标键盘动作具体实现

    2022-12-23 10:51:29
  • Python建立Map写Excel表实例解析

    2023-05-01 02:10:26
  • 用jquery写的自动提示效果

    2008-06-17 14:27:00
  • Python读写zip压缩文件的方法

    2021-10-08 02:28:11
  • Oracle 11g数据库安装与卸载的方法图解

    2024-01-22 19:54:15
  • 中国目前流行的网页设计风格

    2007-12-20 12:57:00
  • 通过XSL转换XML文件步骤

    2008-01-27 16:03:00
  • python3处理word文档实例分析

    2023-01-06 23:21:13
  • python多线程编程中的join函数使用心得

    2021-09-28 16:49:30
  • python实现SOM算法

    2023-05-27 03:18:42
  • Zabbix实现监控多个mysql过程解析

    2024-01-25 20:24:53
  • JavaScript定义函数的三种实现方法

    2024-04-16 09:06:15
  • 40个有创意的jQuery图片和内容滑动及弹出插件收藏集之三

    2024-04-22 22:20:09
  • asp之家 网络编程 m.aspxhome.com