首先要说一下socket套接字的基本定义以及概念,这里先列举微软计算机词典对于套接字的描述

Socket is an identifier for a particular service on a particular node on a network. The socket consists of a node address and a port number, which identifies the service.
套接字是一个位于网络中特定节点的服务所具有的标识符。套接字包含一个节点地址和一个端口号,用来标识这一服务。

其实简单点说:套接字就是一个计算机IP地址与计算机端口号的组合,其中IP地址用于区分主机(每一个计算机都有一个独立的IP地址),而端口号主要用来区分是什么程序调用(每个程序在进行通信时都需要占用一个或者多个不冲突的端口)

而TCP套接字可以形象的比喻为电话机,这里以接电话为例子讲解套接字的创建过程(打电话的过程与接电话的过程有着差异)

第一步是调用socket函数(安装电话机)|(要想打电话首先要进行电话机的安装)

#include <sys/socket.h>
int socket(int domain,int type,int protocol)
->成功时返回文件描述,失败时返回-1

第二步是调用Bind函数进行标志的分配(在打电话时我们需要知道电话号码)

#include <sys/socket.h>
int bind(int sockfd,struct sockaddr *myaddr,socklen_t addrlen)
->成功时返回0,失败时返回-1

第三步是调用listen函数进行电话线的连接(打电话是我们的电话之间是通过电话线进行连接的)

#include <sys/socket>
int listen(int sockfd,int backlog);
->成功时返回0,失败时返回-1

其中如果是请求连接端(打电话)时,我们采用的是connect函数:

#include <sys/soocket.h>
int connect(int sockfd,struct sockaddr *serv_addr,socklen_t addrlen)

最后一步就是调用accept函数进行接收(拿起电话接听)

#include <sys/socket>
int accept(int sockfd,struct sockaddr *addr,socklen_t *addrlen)
->成功时返回文件描述符,失败时返回-1

网络编程中接收连接请求的套接字创建(接电话)可以概括为如下四步:

Step1:调用socket函数创建套接字

Step2:调用bind函数分配IP地址和端口号

Step3:调用listen函数转为可以接收请求状态

Step4:调用accept函数受理连接请求

构建TCP套接字(socket)的概念及具体步骤相关推荐

  1. TCP套接字编程详解

    目录 为什么socket编程又叫套接字编程? TCP服务端 初始化套接字库--WSAStarup 创建套接字--socket 绑定到本机 --bind 开始监听 --listen 连接客户端请求--a ...

  2. 5.1 计算机网络之传输层(传输层提供的服务及功能概述、端口、套接字--Socket、无连接UDP和面向连接TCP服务)

    文章目录 1.传输层提供的服务及功能概述 2.传输层的寻址与端口 (1)端口的作用 (2)端口号的分类 (3)套接字 3.无连接UDP和面向连接TCP服务 1.传输层提供的服务及功能概述 传输层的功能 ...

  3. [python学习] 专题七.网络编程之套接字Socket、TCP和UDP通信实例

    很早以前研究过C#和C++的网络通信,参考我的文章:                  C#网络编程之Tcp实现客户端和服务器聊天                 C#网络编程之套接字编程基础知识   ...

  4. 计算机网络(二) | 网络编程基础、Socket套接字、UDP和TCP套接字编程

    目录 一.网络编程基础 1.1 为什么需要网络编程 1.2 什么是网络编程 1.3 网络编程中的基本概念 二.Socket套接字 2.1 概念 2.2 分类 2.3 Java数据报套接字通信模型 2. ...

  5. 网络编程(part9)--socket套接字编程之TCP套接字

    鄙人学习笔记 文章目录 套接字介绍 定义 套接字分类(针对TCP和UDP的分类) TCP套接字编程 服务端流程 代码实现 举个例子 客户端流程 代码实现 举个例子 TCP套接字数据传输特点 做个练习 ...

  6. Java套接字Socket编程--TCP参数

    在Java的Socket中,主要包含了以下可设置的TCP参数. 属性 说明 默认值 SO_TIMEOUT 对ServerSocket来说表示等待连接的最长空等待时间; 对Socket来说表示读数据最长 ...

  7. Python+socket实现TCP套接字服务端自由限速

    好消息:"Python小屋"编程比赛正式开始 推荐图书: <Python程序设计(第3版)>,(ISBN:978-7-302-55083-9),董付国,清华大学出版社, ...

  8. 《计算机网络:自顶向下方法(原书第6版)》一2.7 TCP套接字编程

    本节书摘来华章计算机<计算机网络:自顶向下方法(原书第6版)>一书中的第2章 ,第2.7节,(美)James F.Kurose Keith W.Ross 著 陈 鸣 译 更多章节内容可以访 ...

  9. 套接字socket 的地址族和类型、工作原理、创建过程

    注:本分类下文章大多整理自<深入分析linux内核源代码>一书,另有参考其他一些资料如<linux内核完全剖析>.<linux c 编程一站式学习>等,只是为了更好 ...

最新文章

  1. git commit 提交的时候报错husky > pre-commit hook failed 或者‘lint-staged‘ 不是内部或外部命令,也不是可运行的程序(解决办法)
  2. 知乎高赞:一行代码凭什么躺普通程序员的10年工资?
  3. 进入全屏 nodejs+express+mysql实现restful风格的增删改查示例
  4. 华为有意向西方公司出售 5G 技术;iOS 13 被爆漏洞;GNOME 3.34 正式发布| 极客头条...
  5. 安卓动画全解:补间动画(视图动画)、布局动画、属性动画、逐帧动画。动画Animation属性、Alpha属性、Scale属性、Translate属性、Rotate属性,动画集AnimationSet
  6. Bootstrapbutton
  7. One method of fixing this is to repeatedly uninstall numpy until none is found, then reinstall this
  8. 关于flash跨域问题
  9. 三原色是红黄蓝对吗_三原色是哪几种颜色?是红黄蓝,还是红绿蓝
  10. 在java中定义标示符_JAVA中定义标识符时可以使用系统保留的关键字。
  11. C# 实现数字转汉字大写
  12. 人脸识别,人脸识别门禁系统的原理
  13. java去处科学技术法,java撤销科学计数法
  14. HTML系列之div和span标签
  15. 天下武功唯快不破------实验吧
  16. matlab r2020a例题 2.1节 数据类型(下)
  17. 详谈!抖音蓝V认证的常见问题总结
  18. java毕业设计车辆违规信息管理系统Mybatis+系统+数据库+调试部署
  19. 手把手学会LoadRunner参数化【LoadRunner】
  20. 愤怒的小鸟4只编外鸟_愤怒的小鸟2编外怎么得

热门文章

  1. 明日方舟抽卡模拟器wiki_明日方舟抽卡模拟器
  2. Genero BDL 数据类型(1)
  3. angular报$injector / unpr的错误
  4. 黑马头条项目-Vue-day9-文章详情模块、关注与取消关注,点赞和喜欢功能
  5. 点到线段的最短距离——矢量法
  6. 巴比特 | 元宇宙每日必读:HTC 宣布推出首款元宇宙手机,售价约2700元人民币,都有哪些新玩法?...
  7. 用python画星空-【Python】手把手教你绘制星空旅游线路图
  8. 干支纪年法简便算法_初中历史所涉及的四种纪年法
  9. Linux——(1)基本命令
  10. 计算机毕业设计Java后勤管理系统(源码+系统+mysql数据库+lw文档)