千家信息网

python socket编程

发表于:2026-11-03 作者:千家信息网编辑
千家信息网最后更新 2026年11月03日,建立服务器连接需要六个步骤。第1步是创建socket对象。调用socket构造函数。socket=socket.socket(familly,type)family的值可以是AF_UNIX(Unix域
千家信息网最后更新 2026年11月03日python socket编程

建立服务器连接需要六个步骤。

第1步是创建socket对象。调用socket构造函数。

socket=socket.socket(familly,type)
family的值可以是AF_UNIX(Unix域,用于同一台机器上的进程间通讯),也可以是AF_INET(对于IPV4协议的TCP和 UDP),至于type参数,SOCK_STREAM(流套接字)或者 SOCK_DGRAM(数据报文套接字),SOCK_RAW(raw套接字)。

第2步则是将socket绑定(指派)到指定地址上,socket.bind(address)

address必须是一个双元素元组,((host,port)),主机名或者ip地址+端口号。如果端口号正在被使用或者保留,或者主机名或ip地址错误,则引发socke.error异常。

第3步,绑定后,必须准备好套接字,以便接受连接请求。

socket.listen(backlog)
backlog指定了最多连接数,至少为1,接到连接请求后,这些请求必须排队,如果队列已满,则拒绝请求。

第4步,服务器套接字通过socket的accept方法等待客户请求一个连接:

connection,address=socket.accept()
调用accept方法时,socket会进入'waiting'(或阻塞)状态。客户请求连接时,方法建立连接并返回服务器。accept方法返回一个含有俩个元素的元组,形如(connection,address)。第一个元素(connection)是新的socket对象,服务器通过它与客户通信;第二个元素(address)是客户的internet地址。

第5步是处理阶段

服务器和客户通过send和recv方法通信(传输数据)。服务器调用send,并采用字符串形式向客户发送信息。send方法返回已发送的字符个数。服务器使用recv方法从客户接受信息。调用recv时,必须指定一个整数来控制本次调用所接受的最大数据量。recv方法在接受数据时会进入'blocket'状态,最后返回一个字符串,用它来表示收到的数据。如果发送的量超过recv所允许,数据会被截断。多余的数据将缓冲于接受端。以后调用recv时,多余的数据会从缓冲区删除。

第6步,传输结束,服务器调用socket的close方法以关闭连接。


建立一个简单客户连接则需要4个步骤。


第1步,创建一个socket以连接服务器 socket=socket.socket(family,type)

第2步,使用socket的connect方法连接服务器 socket.connect((host,port))

第3步,客户和服务器通过send和recv方法通信。

第4步,结束后,客户通过调用socket的close方法来关闭连接。

server.py
#!/usr/bin/env python
# TCP-server
import socket
import time

HOST=''
PORT=8001
BUFSIZ=1024

sock=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
sock.bind((HOST,PORT))
sock.listen(5)
while True:
print 'waiting for connection...'
connection,address=sock.accept()
print ('connection from', address)
while True:
try:
data=connection.recv(BUFSIZ)
except:
print (e)
connection.close()
break
if not data:
break
s='Hi,you send me : [%s] %s' % (time.ctime(),data.decode('utf8'))
connection.send(s.encode('utf8'))
print ([time.ctime()],':',data.decode('utf8'))
connection.close()
sock.close()

client.py
#!/usr/bin/env python
# TCP-client
import socket
import sys

HOST='127.0.0.1'
PORT=8001
BUFSIZ=1024
client=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
client.connect((HOST,PORT))
while True:
data=raw_input('-->')
if data=='quit':
sys.exit()
client.send('%s\r\n' % data.encode('utf8'))
d=client.recv(BUFSIZ)
print (d.decode('utf8'))

方法 服务器 服务 客户 数据 套接字 元素 地址 字符 通信 主机 信息 口号 字符串 对象 步骤 状态 传输 缓冲 最大 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 互联网科技公司华为 科技互联网技术 互联网科技未来 贷财互联网科技 互联网金融和金融科技 互联网汽车科技小镇 农村开互联网科技讲堂 中国的互联网科技企业的崛起 成都互联网科技公司100强 团飞科技与伯堂互联网服务平台 华夏互联网科技业 互联网科技公司有风险吗 元气玛特互联网科技公司是外包吗 宇信科技在杭州互联网排第几 互联网科技接地气 互联网科技职业技能培训学校 悟空问答互联网科技 安徽零酒互联网科技有限公司 陕西彩京云互联网科技有限公司 承德科技产业互联网平台 深圳九邦互联网科技有限公司 互联网科技革命 上海万想互联网科技 广州优美互联网科技 重庆威客帮互联网科技 华夏互联网科技业 山东星卡互联网科技有限公司官网 卡尔迅互联网科技有限公司 互联网金融金融科技 瑞安市蟠桃会互联网科技有限公司
0