socket编程学习-------套接字概述

前段时间学习了一下套接字编程,这里先简单介绍一下关于套接字

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)

 

下面来一张图形象生动一下

 

posted @ 2017-12-20 21:27  ~天梦  阅读(645)  评论(0编辑  收藏  举报