1.什么是客户端/服务器架构?
1.1服务器可以有多个吗?
客户端就是一个吗?服务器可以为一个或多个客户端(服务的用户)提供所需的“服务”。它存在的唯一目的就是等待客户端的请求,并响应它们(提供服务),然后等待更多请求。
1.2有哪些具体的例子?
2.什么是套接字?
套接字是计算机网络的数据结构。与通信端点一样。
3.服务器端和客户端代码
客户端:
from socket import *
HOST = '67.209.188.xxx'
PORT = 21567
BUFSIZE = 1024
ADDR = (HOST, PORT)
tcpCliSock = socket(AF_INET, SOCK_STREAM)#walden,第一个参数指定是地址家族中的IPV4,可以是IPV6,第二个参数是面向连接的套接字类型,即TCP套接字,对应还有UDP套接字
tcpCliSock.connect(ADDR)#walden,这个地址是由两部分组成,分别是服务器的主机名与端口名,主机名是ip
while True:
data = raw_input('> ')
if not data:
break;
tcpCliSock.send(data)
data = tcpCliSock.recv(BUFSIZE)
if not data:
break;
print data
tcpCliSock.close()
服务器端:
from socket import *
from time import ctime
HOST = ''
PORT = 21567
BUFSIZE = 1024
ADDR = (HOST, PORT)
tcpSerSock = socket(AF_INET, SOCK_STREAM)
tcpSerSock.bind(ADDR)
tcpSerSock.listen(5)
while True:
print 'waiting for connection...'
tcpCliSock, addr = tcpSerSock.accept()#walden,被动接受TCP客户端连接,一直等待直到连接到达(阻塞)
print '...connected from::', addr #...connected from:: ('127.0.0.1', 63680) walden ip地址不变,但是后面的端口号每次重现运行后都会发生变化
while True:
data = tcpCliSock.recv(BUFSIZE)
if not data:
break
tcpCliSock.send('[%s] %s' %(ctime(), data))
tcpCliSock.close()
tcpSerSock.close()