Android中基于Socket的网络通信

课程背景:Socket通信是网络通信中最常用的技术之一,通过Socket建立的可靠连接,可以让多个终端与服务器保持通信,最典型的应用是建立一个多人聊天程序。核心内容:1.Socket通信的概念。 2.创建ServerSocket服务器。 3.客户端使用Socket与服务器通信。Socket介绍什么是Socket?Socket又称“套接字”,应用程序通常通过“套接字”向网络发出请求或者应答网络请求
摘要由CSDN通过智能技术生成

课程背景:

Socket通信是网络通信中最常用的技术之一,通过Socket建立的可靠连接,可以让多个终端与服务器保持通信,最典型的应用是建立一个多人聊天程序。

核心内容:

1.Socket通信的概念。
2.创建ServerSocket服务器。
3.客户端使用Socket与服务器通信。

Socket介绍

什么是Socket?

Socket又称“套接字”,应用程序通常通过“套接字”向网络发出请求或者应答网络请求。

在Java中,Socket和ServerSocket类库位于java.net包中。ServerSocket用于服务器端,Socket是建立在网络连接时使用的。在连接成功时,应用程序两端都会产生一个Socket实例,操作这个实例,完成所需要的会话。对于一个网络连接来说,套接字是平等的,并没有差别,不因为在服务器端或在客户端而产生不同的级别。不管是Socket还是ServerSocket他们的工作室通过Socket类及其子类完成的。

Socket连接的建立过程

  1. 服务器监听
  2. 客户端发出请求
  3. 建立连接
  4. 通信

Socket特点

  1. Socket基于TCP连接,数据传输有保障
  2. Socket适用于建立长时间连接
  3. Socket编程通常应用于即时通讯

ServerSocket的建立与使用

本课时讲解ServerSocket的建立与使用,使用ServerSocket监听某一端口的请求,当有访问时弹出提示。
这里写图片描述

浏览器测试:

这里写图片描述

使用ServerSocket建立聊天服务器-1

本课时讲解使用accept()方法获取与客户端的Socket链接对象,将该对象指派给一个新的线程,在线程中执行网络数据的交换。实现一对一的数据传输。

在上一节课中我们已经创建了一个ServerSocket并且在主线程中可以运行了,其实这种方法是非常不合理的因为accept()方法会造成主线程阻塞,对于有阻塞的代码需要将他放到一个独立的线程中,如下代码示例:

public class ServerListener extends Thread {
   

    @Override
    public void run() {
        try {
            ServerSocket serverSocket = new ServerSocket(12345);

            while(true){
                Socket socket = serverSocket.accept();// 对于accept函数每当有一个客户端连接到当
                //前ServerSocket时accept方法都会返回一个Socket对象

                //如果有多个客户端连接当前的服务器(ServerSocket)那么就会有多个Socket对象出现,所
                //以在这里要创建一个while循环,循环监听来自客户端的连接

                //处理accept返回的Socket,
                //由于每一个accept要与一个独立的客户端进行通信所以要把这个Socket传递给一个新的线程
                new ChatSocket(socket).start();

                JOptionPane.showMessageDialog(null, "有客户端连接了本机12345端口");                
            }       
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}
/**
 * 用于Socket通信的线程
 * 
 *
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值