关于socket函数,每个的意义和基本功能都知道,但每次使用都会去百度,参数到底是什么,返回值代表什么意义,就是说用的少,也记得不够精确。每次都查半天,经常烦恼于此。索性都弄得清楚、通透,并记录下来,一来便于自己记忆,再者以防日后查阅、回顾。

主要介绍:socket、bind、listen、connect、accept、send、sendto、recv、recvfrom、close、shutdown。

1.socket类型

套接字格式

socket(family,type[,protocal])使用给定的地址族,套接字类型,协议编号(默认为0)来创建套接字

其中:

family指明了协议族/域,通常AF_INET、AF_INET6、AF_LOCAL等;

type是套接口类型,主要是SOCK_STREAM、SOCK_DGRAM、SOCK_RAW;

protocol一般取为0。(默认)与特定的地址家族相关的协议,如果是 0 ,则系统就会根据地址格式和套接类别,自动选择一个合适的协议成功时,返回一个小的非负整数值,与文件描述符类似。

创建TCP Socket:

s = socket.socket(socket.AF_INET,socket.SOCK_STREAM)

创建UDP Socket:

s = socket.socket(socket.AF_INET,socket.SOCK_DGRAM)

2.socket函数

注意:

  • TCP发送数据时,已经建立好TCP连接,所以不需要指定的地址,而UDP是面向无连接的,每次发送要指定发送给谁。
  • 服务端与客户端不能直接发送列表,元组,字典。需要进行字符串化。

host == ip

服务端socket函数

客户端socket函数

公共Socket函数

3.socket编程思路

TCP服务端:

1创建套接字,绑定套接字到本地IP与端口

socket.socket(socket.AF_INET,socket.SOCK_STREAM)
s.bind(("0.0.0.0",80000))

2开始监听连接

s.listen()

3进入循环,不断接受客户端的连接请求

s.accept()

4然后接受传来的数据,并发送给对方数据

s.recv()      #接收数据
s.sendall()#发送数据

5传输完毕后,关闭套接字

s.close()

TCP客户端

1创建套接字,连接远端地址

socket.socket(socket.AF_INET,socket.SOCK_STREAM)
s.connect(("127.0.0.1",8000))

2连接后发送数据和接受数据

s.sendall()
s.recv()

3传输完毕后,关闭套接字

s.close()

python socket函数详解-LMLPHP

07-27 03:40