client
# -*- coding:utf-8 -*-
import socket
import string
#默认参数
serverHost = '127.0.0.1'
serverPort = 8000
filename = 'hello.html'
#创建套接字
clientSocket = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
#根据命令行给参数赋值
if len(sys.argv) > 1:
serverHost = sys.argv[1]
if len(sys.argv) > 2:
serverPort = string.atoi(sys.argv[2],10)
if len(sys.argv) > 3:
filename = sys.argv[3]
#连接服务端
clientSocket.connect((serverHost,serverPort))
print "connect to the server..."
data = 'get /' + filename
#向服务端发送数据
clientSocket.sendall(data)
print 'send:', data
#接收来自服务端的数据并显示
response = clientSocket.recv(8192)
print 'received:', response
#关闭套接字
clientSocket.close()
server
# -*- coding:utf-8 -*-
from socket import *
serverSocket = socket(AF_INET, SOCK_STREAM)
serverSocket.bind(('',8000))
#监听该套接字的连接尝试,5代表允许的最多maxpending个排除的连接尝试
serverSocket.listen(5)
print 'The server socket is ready...'
while True:
print 'Ready to serve...'
#接收一个请求并返回一个数据对(s1, (ipaddr,port))
connectionSocket, addr = serverSocket.accept()
try:
#从套接字接收数据,最多8192字节,返回有接收数据组成的字符串
message = connectionSocket.recv(8192)
#取接收到的字符串的第二个单词
filename = message.split()[1]
#打开名字为filename(这里是取filename字符串的第二个字符到结尾/filename)的文件
f=open(filename[1:])
outputdata = f.readlines(-1)
for i in range(0, len(outputdata)):
#发送数据
connectionSocket.send(outputdata[i])
#关闭套接字
connectionSocket.close()
#错误处理
except IOError:
connectionSocket.send('404 Not Found')
connectionSocket.close()
#关闭server套接字
serverSocket.close()
python 数据类型--文件
当使用python内置函数open一个文件时,返回一个文件对象。
open(filename,mode,bufsize)
常用文件操作有
file.read()将整个文件读入字符串中
file.readline()读入文件的一行字符串中
file.readlines()将整个文件按行行读入列表中
file.write()向文件中写入字符串
file.writelines()向文件中写入一个列表
file.close()关闭打开的文件