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
04
import
socket
05
06
s
=
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()
11
host
=
''
12
port
=
1234
13
s.bind((host, port))
#绑定socket地址只有一个参数 是一个地址+端口的元组
14
15
s.listen(
10
)
#开始监听,参数是队列长度
16
17
while
True
:
18
c, addr
=
s.accept()
#接受一个连接
19
20
'Get connection from'
, addr
21
c.send(
'This is a simple server'
)
#发送数据
22
c.recv(
1024
)
#读取数据
23
c.close()
client.py:
01
#!/usr/bin/python
02
#encoding=utf-8
03
04
import
socket
05
06
s
=
socket.socket()
#生成一个socket对象
07
08
server
=
socket.gethostname()
09
server
10
port
=
1234
#一般1024以下端口号可能会有权限限制
11
s.connect((server, port))
#连接服务器
12
s.recv(
1024
)
#读取数据
13
14
say
=
raw_input
(u
'说点什么...'
.encode(
'gbk'
))
15
s.send(
str
(say))
16
17
s.close()
#关闭连接