本例子实现一个回显服务器,当客户端发送一串字符到服务器后,服务器将该串字符返回到客户端。客户端的实现:
#!/usr/bin/env python
# encoding: utf-8
import socket
import sys
messages = [ 'This is the message. ']
server_address = ('localhost', 10000)
#创建一批套接字
socks = list(socket.socket(socket.AF_INET, socket.SOCK_STREAM) for i in range(100))
#每个套接字都连接到服务器
for s in socks:
try:
s.connect(server_address)
print >>sys.stderr, 'connecting to %s port %s' % server_address
except Exception as e:
print e.message
# errno = s.connect_ex(server_address)
# print 'errno=%d'%errno
for message in messages:
#往服务器发送消息
for s in socks:
print >>sys.stderr, '%s: sending "%s"' % \
(s.getsockname(), message)
s.send(message)
#接受服务器返回的消息
for s in socks:
data = s.recv(1024)
print >>sys.stderr, '%s: received "%s"' % \
(s.getsockname(), data)
if not data:
print >>sys.stderr, 'closing socket', s.getsockname()
s.close()
服务器的实现(采用select方式)
#!/usr/bin/env python
# encoding: utf-8
import select
import socket
import sys
import Queue
# 创建套接字并设置该套接字为非阻塞模式
server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
server.setblocking(0)
# 绑定套接字
server_address = ('localhost', 10000)
print >>sys.stderr, 'starting up on %s port %s' % server_address
server.bind(server_address)
# 将该socket变成服务模式
# backlog等于5