当前位置: 首页 > news >正文

java网络编程--基于TCP协议的网络编程

Scoket介绍

利用 TCP 协议进行通信的两个应用程序是有主次之分的,
一个是服务器程序,一个是客户端程序,
两者的功能和编写方法不太一样,
其中 ServerSocket 类表示 Socket 服务器端,Socket 类表示 Socket 客户端。

  1. 服务器端流程:
    (1)创建套接字(ServerSocket)
    (2)将套接字绑定到一个本地地址和端口上(bind)
    (3)将套接字设定为监听模式(),准备接受客户端请求(listen)
    (4)阻塞等待客户端请求到来。当请求到来后,接受连接请求,返回一个新的对应于此客户端连接的套接字sockClient(accept)
    (5)用返回的套接字sockClient和客户端进行通信(send/recv);
    (6)返回,等待另一个客户端请求(accept)
    (7)关闭套接字(close)
  2. 客户端流程:
    (1) 创建套接字(socket)
    (2) 向服务器发出连接请求(connect)
    (3) 和服务器进行通信(send/recv)
    (4) 关闭套接字(close)
    在这里插入图片描述
    ServerSocket 类
          用于在服务器上开一个端口,被动地等待数据(使用 accept() 方法)并建立连接进行数据交互。
    服务器套接字一次可以与一个套接字连接,如果多台客户端同时提出连接请求,
          请求连接的客户端会被存入一个队列中,然后从中取出一个套接字与服务器新建的套接字连接起来。
    若请求连接大于最大容纳数,则多出的连接请求被拒绝;默认的队列大小是 50。
    ServerSocket 的构造方法
       ServerSocket 的构造方法如下所示。
    ServerSocket():无参构造方法。
    ServerSocket(int port):创建绑定到特定端口的服务器套接字。
    ServerSocket(int port,int backlog):使用指定的 backlog 创建服务器套接字并将其绑定到指定的本地端口。
    ServerSocket(int port,int backlog,InetAddress bindAddr):使用指定的端口、监听 backlog 和要绑定到本地的 IP 地址创建服务器。
    创建 ServerSocket 时可能会拋出 IOException 异常,所以要进行异常捕捉。
try{ServerSocket serverSocket=new ServerSocket(8111);
}
catch(IOException e){e.printStackTrace();
}

ServerSocket 的常用方法
      ServerSocket 的常用方法如下所示。
1.Server accept():监听并接收到此套接字的连接。
2.void bind(SocketAddress endpoint):将 ServerSocket 绑定到指定地址(IP 地址和端口号)。
3.void close():关闭此套接字。
4.InetAddress getInetAddress():返回此服务器套接字的本地地址。
5.int getLocalPort():返回此套接字监听的端口。
6.SocketAddress getLocalSocketAddress():返回此套接字绑定的端口的地址,如果尚未绑定则返回 null。
7.int getReceiveBufferSize():获取此 ServerSocket 的 SO_RCVBUF 选项的值,该值是从 ServerSocket 接收的套接字的建议缓冲区大小。

调用 accept() 方法会返回一个和客户端 Socket 对象相连接的 Socket 对象,
服务器端的 Socket使用 getOutputStream() 方法获得的输出流
将指向客户端 Socket 使用 getInputStream() 方法获得那个输入流。同样,服务器端的 Socket使用的 getInputStream() 方法获得的输入流将指向
客户端 Socket 使用的 getOutputStream() 方法获得的那个输出流。
也就是说,当服务器向输出流写入信息时,客户端通过相应的输入流就能读取,反之同样如此。

Socket 类
Socket 类表示通信双方中的客户端,用于呼叫远端机器上的一个端口,
主动向服务器端发送数据(当连接建立后也能接收数据)。

Socket 的构造方法
Socket 的构造方法如下所示。
Socket():无参构造方法。
Socket(InetAddress address,int port):创建一个流套接字并将其连接到指定 IP 地址的指定端口。
Soclcet(InetAddress address,int port,InetAddress localAddr,int localPort):创建一个套接字并将其连接到指定远程地址上的指定远程端口。
Socket(String host,int port):创建一个流套接字并将其连接到指定主机上的指定端口。
Socket(String host,int port,InetAddress localAddr,int localPort):创建一个套接字并将其连接到指定远程地址上的指定远程端口。

Socket 的常用方法
Socket 的常用方法如下所示。
void bind(SocketAddress bindpoint):将套接字绑定到本地地址。
void close():关闭此套接字。
void connect(SocketAddress endpoint):将此套接字连接到服务器。
InetAddress getInetAddress():返回套接字的连接地址。
InetAddress getLocalAddress():获取套接字绑定的本地地址。
InputStream getInputStream():返回此套接字的输入流。
OutputStream getOutputStream():返回此套接字的输出流。
SocketAddress getLocalSocketAddress():返回此套接字绑定的端点地址,如果尚未绑定则返回 null。
SocketAddress getRemoteSocketAddress():返回此套接字的连接的端点地址,如果尚未连接则返回 null。
int getLoacalPort():返回此套接字绑定的本地端口。
int getPort():返回此套接字连接的远程端口。

例子-客户端与服务器端的简单通信

http://www.lryc.cn/news/544066.html

相关文章:

  • PageHelper新发现
  • Redis 数据结构和使用详解(带示例)
  • 深度解读 Chinese CLIP 论文:开启中文视觉对比语言预训练
  • SpringBoot 2 后端通用开发模板搭建(异常处理,请求响应)
  • 【Oracle专栏】sqlplus显示设置+脚本常用显示命令
  • DeepSeek 助力 Vue3 开发:打造丝滑的页眉(Header)
  • JVM线程分析详解
  • 【备赛】点亮LED
  • 【音视频】编解码相关概念总结
  • Python爬虫(四)- Selenium 安装与使用教程
  • Node.js项目启动流程以及各个模块执行顺序详解
  • 各种类型网络安全竞赛有哪些 网络安全大赛的简称
  • 浅谈人工智能与深度学习的应用案例研究
  • vue2版本elementUI的table分页实现多选逻辑
  • AI数字人技术源码开发分享:革新短视频营销策略
  • 实验环境搭建集锦(docker linux ros2+强化学习环境+linux上单片机串口调试)
  • sql调优之数据库开发规范
  • 《Effective Objective-C》阅读笔记(上)
  • ClkLog里程碑:荣获2024上海开源技术应用创新竞赛三等奖
  • 【数据结构进阶】哈希表
  • STM32内存五区及堆栈空间大小设置(启动文件浅析)
  • 微信小程序调用火山方舟(字节跳动火山引擎)中的DeepSeek大模型
  • (八)Java-Collection
  • 从单片机的启动说起一个单片机到点灯发生了什么下——使用GPIO点一个灯
  • C++ | 哈希表
  • leetcode_动态规划/递归 70. 爬楼梯
  • 基于Rook的Ceph云原生存储部署与实践指南(上)
  • C++ Qt常见面试题(4):Qt事件过滤器
  • regionserver实例僵住问题分析
  • 服务器离线部署DeepSeek