#encoding=utf-8
# 创建一个 TCP 服务器程序,这个程序会把客户发送过来的字
# 符串加上一个时间戳(格式:‘[时间]数据‘)返回给客户。
from socket import *
from time import ctime
host = ‘‘
port = 21567
bufsiz = 1024
addr = (host,port)
# ss = socket() # 创建服务器套接字
# ss.bind() # 把地址绑定到套接字上
# ss.listen() # 监听连接
# inf_loop: # 服务器无限循环
# cs = ss.accept() # 接受客户的连接
# comm_loop: # 通讯循环
# cs.recv()/cs.send() # 对话(接收与发送)
# cs.close() # 关闭客户套接字
# ss.close() # 关闭服务器套接字(可选)
#创建tcp套接字,绑定,监听
tcpServerSock = socket(AF_INET,SOCK_STREAM)#创建TCP Socket
#AF_INET 服务器之间网络通信
#socket.SOCK_STREAM 流式socket , for TCP
tcpServerSock.bind(addr)#将套接字绑定到地址,
#在AF_INET下,以元组(host,port)的形式表示地址.
tcpServerSock.listen(5)#操作系统可以挂起的最大连接数量,至少为1,大部分为5
while True:
print ‘waiting for connection‘
tcpClientSock, addr2 = tcpServerSock.accept() #接受客户的连接
#接受TCP连接并返回(conn,address),其中conn是新的套接字对象,
#可以用来接收和发送数据。
#address是连接客户端的地址。
print ‘connected from :‘,addr2
while True:
data = tcpClientSock.recv(bufsiz) #接收客户端发来的数据
if not data:
break
tcpClientSock.send(‘[%s] %s‘ % (ctime(),data)) #返回给客户端数据
tcpClientSock.close()
tcpServerSock.close()
-------------------------------------------------------------------------
#encoding=utf-8
#创建tcp客户端
# cs = socket() # 创建客户套接字
# cs.connect(address) # 尝试连接address处的服务器
# comm_loop: # 通讯循环
# cs.send()/cs.recv() # 对话(发送/接收)
# cs.close() # 关闭客户套接字
from socket import *
host = ‘localhost‘
port = 21567
bufsize = 1024
addr = (host,port)
tcpClientSock = socket(AF_INET,SOCK_STREAM)
tcpClientSock.connect(addr)#s.connect(address)
#连接到address处的套接字
while True:
data = raw_input(‘>‘)
if not data:
break
tcpClientSock.send(data) #像服务端发送数据
data = tcpClientSock.recv(bufsize) #接收服务端返回的数据
if not data:
break
print data
tcpClientSock.close()