前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >Socket编程基础-套接字的创建和使用

Socket编程基础-套接字的创建和使用

原创
作者头像
玖叁叁
发布2023-04-19 11:45:29
发布2023-04-19 11:45:29
73000
代码可运行
举报
文章被收录于专栏:玖叁叁玖叁叁
运行总次数:0
代码可运行

Socket编程是在计算机网络中实现应用程序之间通信的一种方式。套接字(socket)是一种通信机制,可以用于不同主机之间的进程间通信,也可以用于同一主机内进程之间的通信。套接字的使用需要两个端点:一个是服务器端,另一个是客户端。服务器端是负责提供服务的主机,客户端是向服务器发出请求的主机。

创建套接字

创建套接字的基本步骤如下:

导入socket模块

在Python中,需要先导入socket模块才能使用套接字。

代码语言:javascript
代码运行次数:0
运行
复制
import socket

创建套接字

使用socket.socket()函数可以创建套接字。该函数接受两个参数,第一个参数指定地址族(IPv4或IPv6),第二个参数指定套接字类型(流套接字或数据报套接字)。

代码语言:javascript
代码运行次数:0
运行
复制
# 创建一个IPv4的流套接字
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

绑定套接字

如果要在服务器端使用套接字,则需要将套接字绑定到一个地址和端口上。使用socket.bind()函数可以将套接字绑定到一个地址和端口上。

代码语言:javascript
代码运行次数:0
运行
复制
# 将套接字绑定到本地地址和端口上
sock.bind(('localhost', 8888))

监听套接字

如果要在服务器端接受连接请求,则需要将套接字设置为监听状态。使用socket.listen()函数可以将套接字设置为监听状态。

代码语言:javascript
代码运行次数:0
运行
复制
# 将套接字设置为监听状态,最大连接数为5
sock.listen(5)

使用套接字

使用套接字可以实现不同主机之间或同一主机内进程之间的通信。下面将介绍如何使用套接字进行通信。

客户端

客户端使用套接字与服务器端建立连接,向服务器端发送请求,并接收服务器端的响应。

建立连接

使用socket.connect()函数可以与服务器端建立连接。

代码语言:javascript
代码运行次数:0
运行
复制
# 连接服务器
sock.connect(('localhost', 8888))

发送数据

使用socket.send()函数可以向服务器端发送数据。

代码语言:javascript
代码运行次数:0
运行
复制
# 向服务器发送数据
sock.send('Hello, world!')

接收数据

使用socket.recv()函数可以从服务器端接收数据。

代码语言:javascript
代码运行次数:0
运行
复制
# 从服务器接收数据,最多接收1024字节
data = sock.recv(1024)

关闭连接

使用socket.close()函数可以关闭套接字。

代码语言:javascript
代码运行次数:0
运行
复制
pythonCopy code# 关闭连接
sock.close()

服务器端

服务器端使用套接字接受客户端的连接请求,并向客户端发送响应。

接受请求

使用socket.accept()函数可以接受客户端的连接请求,该函数返回一个连接对象和客户端的地址。

代码语言:javascript
代码运行次数:0
运行
复制
# 接受客户端连接请求
conn, addr = sock.accept()

接收数据

使用conn.recv()函数可以从客户端接收数据。

代码语言:javascript
代码运行次数:0
运行
复制
pythonCopy code# 从客户端接收数据,最多接收1024字节
data = conn.recv(1024)

发送数据

使用conn.send()函数可以向客户端发送数据。

代码语言:javascript
代码运行次数:0
运行
复制
# 向客户端发送数据
conn.send('Hello, client!')

关闭连接

使用conn.close()函数可以关闭连接对象。

代码语言:javascript
代码运行次数:0
运行
复制
# 关闭连接
conn.close()

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 创建套接字
    • 导入socket模块
    • 创建套接字
    • 绑定套接字
    • 监听套接字
  • 使用套接字
    • 客户端
    • 建立连接
    • 发送数据
    • 接收数据
    • 关闭连接
    • 服务器端
    • 接受请求
    • 接收数据
    • 发送数据
    • 关闭连接
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档