socket编程学习-------套接字概述
2020-02-01 00:54
609 查看
前段时间学习了一下套接字编程,这里先简单介绍一下关于套接字
1.什么是套接字编程:
源IP地址和目的IP地址以及源端口号和目的端口号的组合称为套接字。其用于标识客户端请求的服务器和服务。
- 网络化网络化的应用程序在开始任何通讯之前都必须要创建套接字,没有它就完全没办法通讯
- 一开始,套接字被设计用在同一台主机上多个应用程序之间的通讯,这也叫进程间通讯,或IPC
- 套接字有两种,分别是基于文件型的和基于网络型的
- AF_UNIX表示”地址家族:UNIX” –>基于文件的AF_INET表示”地址家族:Internet”–>基于网络的
- python只支持AF_INET、AF_UNIX、AF_NETLINK家族
2.基于TCP套接字编程
基于 TCP 的套接字编程的所有客户端和服务器端都是从调用socket 开始,它返回一个套接字描述符。客户端随后调用connect 函数,服务器端则调用 bind、listen 和accept 函数。
3.套接字基本原理
在网络中最常用的通信模式是客户机/服务器模式(Client/Server模式或C/S模式)。
服务器方要先启动,并监听指定端口,等待客户端的请求,根据客户端的请求提供相应服务。
一般来说,要进行网络通信,必须要在网络的每一端都要建立一个套接字,两个套接字之间是可以建立连接的,也是可以无连接的,并通过对套接字的“读”、“写”操作实现网络通信功能。类似于文件的打开、读、写、关闭的方式。
4.与套接字相关的系统调用:
- socket---创建一个套接字
- close---销毁一个套接字
- connect--在两个套接字之间建立连接
- bind---将一个服务器套接字绑定一个地址
- listen---设置一个套接字为接受连接状态
- accept---接受一个连接请求并为新建的连接创建一个新的套接字
==== ==当你创建一个套接字的时候,需要指明三种选项:命名空间,通信类型和协议=====
5.服务器端程序:
- 加载套接字库
- 创建套接字(socket)
- 将套接字绑定到一个本地地址端口上(bind)
- 将套接字设为监听模式,准备接收客户请求(listen)
- 等待客户请求到来,请求到来后,接受连接请求,返回一个新的对应此次连接的套接字(accept)
- 用返回的套接字和客户端进行通信(send/recv)
- 返回,等待另一客户请求
- 关闭套接字
6.客户端程序:
- 加载套接字库
- 创建套接字(socket)
- 向服务器发出连接请求(connect)
- 和服务器进行通信(send/recv)
- 关闭套接字(close)
下面来一张图形象生动一下
转载于:https://www.cnblogs.com/Beyond-Ricky/p/8075919.html
- 点赞
- 收藏
- 分享
- 文章举报
相关文章推荐
- UNIX环境高级编程学习之第十六章网络IPC:套接字 - 非阻塞的Socket通信EPoll模型(多路复用), 实用Socket通信模板
- socket编程学习(二)地址转换与套接字
- UNIX环境高级编程学习之第十六章网络IPC:套接字 - 简单UDP Socket 通信
- JAVA Socket编程学习1--系统间通信概述
- UNIX环境高级编程学习之第十六章网络IPC:套接字 - 非阻塞的Socket通信Select模型(多路复用), 实用Socket通信模板。
- 【网络编程学习笔记01】Socket套接字编程(TCP/IP)
- 10、套接字socket的编程(学习笔记)
- UNIX环境高级编程学习之第十六章网络IPC:套接字 - 简单TCP Socket 通信
- unix环境编程学习笔记---------套接字------socket------客户端
- 网络编程一:概述、网络模型、TCP\UDP、Socket套接字、UDP发送和接收、UDP聊、阻塞式方法
- UNIX环境高级编程学习之第十六章网络IPC:套接字 - 非阻塞的Socket通信Poll模型(多路复用), 实用Socket通信模板
- ios Socket套接字编程
- Linux IPC:套接字(socket)学习小结(一)
- socket套接字编程
- C#套接字Socket编程之最简单通信
- 记一次C# UDP 编程之 “System.Net.Sockets.SocketException:“通常每个套接字地址(协议/网络地址/端口)只允许使用一次
- 网络编程——Socket(Linux套接字编程)
- socket套接字编程预备知识
- 网络编程二(套接字Socket、客户端和服务端通信问题)
- python的学习之路day7-socket网络编程