python socket的简单例子 « Cyrec’s Blog
python socket的简单例子
发布于: August 17, 2011, 12:01 am
分类: python
作者: Cyrec
阅读: [416]服务端的通信过程:
socket—>bind—>listen(连接请求)—>accept—>send(发送数据)—>recv(接受数据)—>close
客户端的通信过程:
socket—>bind(可选)—>connect(连接服务器)—>sends(发送数据)—>recv(接受数据)—>close
下面是一个简单的服务端客户端的实现:
server.py:
01#!/usr/bin/python
02#encoding=utf-8
03
04importsocket
05
06s=socket.socket(socket.AF_INET, socket.SOCK_STREAM)
07#第一个参数AF_INET,AF_INET6,AF_UNIX默认AF_INET,第二个参数有SOCK_STREAM和SOCK_DGRAM
08#默认为SOCK_STREAM流套接字提供双向有序且不重复的数据服务也可以直接写s=socket.socket()
09
10#host = socket.gethostname()
11host=''
12port=1234
13s.bind((host, port))#绑定socket地址只有一个参数 是一个地址+端口的元组
14
15s.listen(10)#开始监听,参数是队列长度
16
17whileTrue:
18c, addr=s.accept()#接受一个连接
19
20'Get connection from', addr
21c.send('This is a simple server')#发送数据
22c.recv(1024)#读取数据
23c.close()client.py:
01#!/usr/bin/python
02#encoding=utf-8
03
04importsocket
05
06s=socket.socket()#生成一个socket对象
07
08server=socket.gethostname()
09server
10port=1234#一般1024以下端口号可能会有权限限制
11s.connect((server, port))#连接服务器
12s.recv(1024)#读取数据
13
14say=raw_input(u'说点什么...'.encode('gbk'))
15s.send(str(say))
16
17s.close()#关闭连接
浙公网安备 33010602011771号