在python环境中已经自带了scoket库,只需要简单的几行代码便可以搭建scoket环境进行通信。
1.首先需要导入scoket包
import scoket
2.然后初始化scoket实例,scoket方法中有三个参数(地址簇,类型,协议)
init = scoket.scoket()
参数一:地址簇
socket.AF_INET IPv4(默认)
socket.AF_INET6 IPv6
socket.AF_UNIX 只能够用于单一的Unix系统进程间通信
参数二:类型
socket.SOCK_STREAM 流式socket , for TCP (默认)
socket.SOCK_DGRAM 数据报式socket , for UDP
socket.SOCK_RAW 原始套接字,普通的套接字无法处理ICMP、IGMP等网络报文,而SOCK_RAW可以;其次,SOCK_RAW也可以处理特殊的IPv4报文;此外,利用原始套接字,可以通过IP_HDRINCL套接字选项由用户构造IP头。
socket.SOCK_RDM 是一种可靠的UDP形式,即保证交付数据报但不保证顺序。SOCK_RAM用来提供对原始协议的低级访问,在需要执行某些特殊操作时使用,如发送ICMP报文。SOCK_RAM通常仅限于高级用户或管理员运行的程序使用。
socket.SOCK_SEQPACKET 可靠的连续数据包服务
参数三:协议
0 (默认)与特定的地址家族相关的协议,如果是 0 ,则系统就会根据地址格式和套接类别,自动选择一个合适的协议
3.然后绑定ip地址和端口号 使用bind方法(默认应该都是自己的ip所以用localhost)
init.bind(('localhost',1234))
4.然后开始监听连接,监听方式是listen(非阻塞,需填写最大链接个数)
init.listen(5)
5.然后使用accept()方法阻塞链接等待信息传递,返回(套接字对象,ip)
init.accept()
6.使用recv()接收数据,接收过来的数据是二进制所以还需要转义
data = conn.recv(1024)
print(data.decode())
7.然后建立客户端,1,2步相同,使用connect((ip,端口)),方法进行连接
init.connect(('localhost',1234))
8.发送信息send方法
init.send('hello'.encode('utf-8'))
此时scoket搭建完成,看一下测试情况