python:socket基础操作(1)-《环境准备&&介绍》

我这里的环境是在真机上下载了一个 pycharm 进行编写

并且还开了两台虚拟机

一台为win7  下载了一个网络调试助手,因为等会编写的时候分为客户端和服务端,当我们编写了客户端或者服务端,可以用图形化的网络调试助手去当对象,图形化简单易上手

另一台为Ubuntu,直接把python3下载好,当我们自己编写完客户端和服务端,把另一半放到ubuntu上直接跑就行

具体的安装软件安装过程我就不做过多的介绍,如果不会安装py3的环境或者pycharm网上一搜教程就一大堆


这几章节我会简单的介绍一下socket套接字的基础用法,不会太过深入


套接字的介绍 

套接字(Socket)是计算机网络编程中的一种抽象概念,它提供了一种通信机制,使得不同计算机之间可以进行数据交换和通信。套接字可以看作是网络通信的端点,通过套接字可以建立网络连接、发送和接收数据。

  1. 地址族(Address Family):套接字使用地址族来指定网络协议的类型。常见的地址族包括 IPv4(AF_INET)、IPv6(AF_INET6)和本地套接字(AF_UNIX)。地址族定义了套接字的寻址方式和网络协议。

  2. 套接字类型(Socket Type):套接字类型定义了套接字的通信方式。常见的套接字类型包括流套接字(SOCK_STREAM)和数据报套接字(SOCK_DGRAM)。流套接字提供可靠的、面向连接的通信,而数据报套接字提供无连接的、不可靠的通信。

  3. 协议(Protocol):套接字在创建时可以指定特定的协议。如果地址族和套接字类型都指定了默认协议,可以省略该参数。常见的协议包括 TCP(IPPROTO_TCP)和 UDP(IPPROTO_UDP)。

  4. 套接字通信模型:套接字通信可以使用两种主要模型:面向连接和无连接。面向连接模型使用 TCP 协议,在通信之前需要建立连接,然后进行可靠的、有序的数据传输。无连接模型使用 UDP 协议,每个数据包都是独立的,不需要建立连接,但可能面临丢失、重复、乱序等问题。

  5. 套接字地址:套接字通过地址来标识和定位网络上的特定进程或主机。对于 IPv4 地址,通常由 IP 地址和端口号组成;对于 IPv6 地址,由 IPv6 地址和端口号组成。套接字地址用于建立连接、发送和接收数据。

  6. 套接字操作:套接字提供了一组操作来进行网络通信。这些操作包括创建套接字、绑定地址、监听连接、接受连接、建立连接、发送数据、接收数据和关闭套接字等。

  7. 套接字选项:套接字提供了一些选项,用于设置套接字的行为和属性。例如,设置套接字的超时时间、启用广播、复用地址等。

  8. 阻塞和非阻塞套接字:套接字可以设置为阻塞或非阻塞模式。在阻塞模式下,套接字的操作会一直阻塞,直到完成或出错。在非阻塞模式下,套接字的操作会立即返回,无论是否完成。

当涉及到网络编程时,Python 的 socket 模块是一个非常有用的工具。它提供了一种用于创建和操作网络套接字的高级接口。通过使用 socket 模块,您可以构建各种网络应用程序,包括客户端和服务器。

下面是对 Python socket 模块的详细介绍:

  1. 创建套接字:使用 socket.socket() 函数创建套接字对象。它接受两个参数,第一个参数是地址族(如 socket.AF_INET 表示 IPv4,socket.AF_INET6 表示 IPv6),第二个参数是套接字类型(如 socket.SOCK_STREAM 表示 TCP,socket.SOCK_DGRAM 表示 UDP)。

  2. 绑定地址:对于服务器,需要将套接字绑定到一个特定的地址和端口上,以便客户端可以连接到它。使用 socket.bind() 方法将套接字绑定到指定的地址和端口。

  3. 监听连接:对于服务器,可以使用 socket.listen() 方法开始监听连接。它接受一个参数,指定在连接队列中等待的最大连接数。

  4. 接受连接:服务器可以使用 socket.accept() 方法接受客户端的连接请求。它返回一个新的套接字对象和客户端的地址,通过该套接字可以与客户端进行通信。

  5. 建立连接:客户端可以使用 socket.connect() 方法连接到服务器。它接受一个参数,指定服务器的地址和端口。

  6. 发送和接收数据:通过套接字对象的 send() 和 receive() 方法,可以发送和接收数据。对于 TCP 套接字,使用 send() 发送数据,使用 recv() 接收数据;对于 UDP 套接字,使用 sendto() 发送数据,使用 recvfrom() 接收数据。

  7. 关闭套接字:使用 socket.close() 方法关闭套接字连接。

这只是 socket 模块的基本用法,它还提供了其他功能,如设置套接字选项、获取套接字信息、处理异常等。您可以查阅 Python 官方文档或其他网络编程教程,以获得更详细的信息和示例代码。

需要注意的是,网络编程涉及到网络安全和错误处理等复杂的问题。在实际应用中,您可能需要处理超时、异常情况、数据的编码和解码等。确保在编写网络应用程序时,对这些问题进行适当的处理和安全考虑。

 

你可能感兴趣的:(python,开发语言)