2-1 Socket家族的基石

Socket通讯的基础流程

sequenceDiagram

client->>server: ①Can you help me?然后client会进入到阻塞状态

server->>server: ②Got!处理一些业务逻辑

server->>client: ③result is xxxxx

缓冲区(Buffer)

每个 socket 被创建后,都会分配两个缓冲区,输入缓冲区和输出缓冲区。

这些I/O缓冲区特性可整理如下:

  • I/O缓冲区在每个TCP套接字中单独存在;

  • I/O缓冲区在创建套接字时自动生成;

  • 即使关闭套接字也会继续传送输出缓冲区中遗留的数据;

  • 关闭套接字将丢失输入缓冲区中的数据。

单播、广播、多播

  • 单播。所谓的单播大多数都是点对点式的网络,如打开网页、发送邮件和两人网络聊天等情况,都是在使用点对点方式传输数据。

  • 广播。广播是一种一对多的形式,是对网络中所有的计算机发送数据,不区分目标,这就极易造成网络中存在大量无用的垃圾通信数据,造成“广播风暴”,使网络变慢,严重时网络会彻底瘫痪。

  • 多播也称为组播,它也是一种一对多的网络。从组播的名字来看,它可以对某些计算机分配多播类型的IP地址以进行分组,然后只针对这些计算机发送数据,这就是多播。

二、Socket的基础操作


实现基础的Socket通信,我们需要核心关注两个类的使用:

  • ServerSocket:ServerSocket类作用是搭建Socket的服务端环境;

  • Socket:Socket类的主要作用是使Server与Client进行通信。

ServerSocket类

ServerSocket类作用是搭建Socket的服务端环境。

构造函数

构造参数backlog

  • 主要作用就是允许接受客户端连接请求的个数。其本质是设置最大等待队列长度,如果队列已满,则拒绝该连接。

  • 默认值50。

public ServerSocket(int port,int backlog) ;

Socket

Socket类的主要作用是使Server与Client进行通信。

常用方法

  • public void bind (SocketAddress bindpoint),作用将套接字绑定到本地地址,否则系统将自动分配端口号。

  • connect()方法,连接方法,用于客户端与服务端建立连接。

示例代码

服务端:

import java.io.IOException;

import java.net.ServerSocket;

import java.net.Socket;

/**

  • 服务端与客户端成功地进行通信

  • Created by dwlijx on 2021/4/26.

  • connect to lijx@zjhcsoft.com

*/

public class BeginServer {

public static void main(String[] args) throws IOException {

ServerSocket serverSocket = new ServerSocket(8888);

Socket socket = serverSocket.accept();

//结束socket通信

socket.close();

//关闭socket服务

serverSocket.close();

System.out.println(“server closed!”);

}

}

最后

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数Java工程师,想要提升技能,往往是自己摸索成长,自己不成体系的自学效果低效漫长且无助。

因此收集整理了一份《2024年Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,不论你是刚入门Java开发的新手,还是希望在技术上不断提升的资深开发者,这些资料都将为你打开新的学习之门!

如果你觉得这些内容对你有帮助,需要这份全套学习资料的朋友可以戳我获取!!

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!
技术上不断提升的资深开发者,这些资料都将为你打开新的学习之门!**

如果你觉得这些内容对你有帮助,需要这份全套学习资料的朋友可以戳我获取!!

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!

  • 7
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值