构建TCP套接字(socket)的概念及具体步骤
首先要说一下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)的概念及具体步骤相关推荐
- TCP套接字编程详解
目录 为什么socket编程又叫套接字编程? TCP服务端 初始化套接字库--WSAStarup 创建套接字--socket 绑定到本机 --bind 开始监听 --listen 连接客户端请求--a ...
- 5.1 计算机网络之传输层(传输层提供的服务及功能概述、端口、套接字--Socket、无连接UDP和面向连接TCP服务)
文章目录 1.传输层提供的服务及功能概述 2.传输层的寻址与端口 (1)端口的作用 (2)端口号的分类 (3)套接字 3.无连接UDP和面向连接TCP服务 1.传输层提供的服务及功能概述 传输层的功能 ...
- [python学习] 专题七.网络编程之套接字Socket、TCP和UDP通信实例
很早以前研究过C#和C++的网络通信,参考我的文章: C#网络编程之Tcp实现客户端和服务器聊天 C#网络编程之套接字编程基础知识 ...
- 计算机网络(二) | 网络编程基础、Socket套接字、UDP和TCP套接字编程
目录 一.网络编程基础 1.1 为什么需要网络编程 1.2 什么是网络编程 1.3 网络编程中的基本概念 二.Socket套接字 2.1 概念 2.2 分类 2.3 Java数据报套接字通信模型 2. ...
- 网络编程(part9)--socket套接字编程之TCP套接字
鄙人学习笔记 文章目录 套接字介绍 定义 套接字分类(针对TCP和UDP的分类) TCP套接字编程 服务端流程 代码实现 举个例子 客户端流程 代码实现 举个例子 TCP套接字数据传输特点 做个练习 ...
- Java套接字Socket编程--TCP参数
在Java的Socket中,主要包含了以下可设置的TCP参数. 属性 说明 默认值 SO_TIMEOUT 对ServerSocket来说表示等待连接的最长空等待时间; 对Socket来说表示读数据最长 ...
- Python+socket实现TCP套接字服务端自由限速
好消息:"Python小屋"编程比赛正式开始 推荐图书: <Python程序设计(第3版)>,(ISBN:978-7-302-55083-9),董付国,清华大学出版社, ...
- 《计算机网络:自顶向下方法(原书第6版)》一2.7 TCP套接字编程
本节书摘来华章计算机<计算机网络:自顶向下方法(原书第6版)>一书中的第2章 ,第2.7节,(美)James F.Kurose Keith W.Ross 著 陈 鸣 译 更多章节内容可以访 ...
- 套接字socket 的地址族和类型、工作原理、创建过程
注:本分类下文章大多整理自<深入分析linux内核源代码>一书,另有参考其他一些资料如<linux内核完全剖析>.<linux c 编程一站式学习>等,只是为了更好 ...
最新文章
- git commit 提交的时候报错husky > pre-commit hook failed 或者‘lint-staged‘ 不是内部或外部命令,也不是可运行的程序(解决办法)
- 知乎高赞:一行代码凭什么躺普通程序员的10年工资?
- 进入全屏 nodejs+express+mysql实现restful风格的增删改查示例
- 华为有意向西方公司出售 5G 技术;iOS 13 被爆漏洞;GNOME 3.34 正式发布| 极客头条...
- 安卓动画全解:补间动画(视图动画)、布局动画、属性动画、逐帧动画。动画Animation属性、Alpha属性、Scale属性、Translate属性、Rotate属性,动画集AnimationSet
- Bootstrapbutton
- One method of fixing this is to repeatedly uninstall numpy until none is found, then reinstall this
- 关于flash跨域问题
- 三原色是红黄蓝对吗_三原色是哪几种颜色?是红黄蓝,还是红绿蓝
- 在java中定义标示符_JAVA中定义标识符时可以使用系统保留的关键字。
- C# 实现数字转汉字大写
- 人脸识别,人脸识别门禁系统的原理
- java去处科学技术法,java撤销科学计数法
- HTML系列之div和span标签
- 天下武功唯快不破------实验吧
- matlab r2020a例题 2.1节 数据类型(下)
- 详谈!抖音蓝V认证的常见问题总结
- java毕业设计车辆违规信息管理系统Mybatis+系统+数据库+调试部署
- 手把手学会LoadRunner参数化【LoadRunner】
- 愤怒的小鸟4只编外鸟_愤怒的小鸟2编外怎么得
热门文章
- 明日方舟抽卡模拟器wiki_明日方舟抽卡模拟器
- Genero BDL 数据类型(1)
- angular报$injector / unpr的错误
- 黑马头条项目-Vue-day9-文章详情模块、关注与取消关注,点赞和喜欢功能
- 点到线段的最短距离——矢量法
- 巴比特 | 元宇宙每日必读:HTC 宣布推出首款元宇宙手机,售价约2700元人民币,都有哪些新玩法?...
- 用python画星空-【Python】手把手教你绘制星空旅游线路图
- 干支纪年法简便算法_初中历史所涉及的四种纪年法
- Linux——(1)基本命令
- 计算机毕业设计Java后勤管理系统(源码+系统+mysql数据库+lw文档)