说明:刚开始接触python网络编程,使用socket编写一个简单的单线程server。socket模块提供了一个工厂函数,也被称为socket,开发者能够调用函数以生成一个套接字对象S。要想执行网络层操做,能够调用S上的方法。在客户程序中,能够调用S.connect链接到一个服务器。在服务器程序中,能够调用S.bind和S.listen等待客户程序的链接。在客户程序请求链接时,服务器程序能够调用S.accept接受请求,该方法将返回链接到客户程序的另外一个套接字对象S1.在有了一个链接的套接字对象以后,就能够调用该对象的send方法传输数据,调用该对象的recv方法接收数据了。关于socket模块提供的函数和socket对象提供的方法请读者参阅python相关的技术书籍(例如《python技术手册》)。 html
分三步: python
1.建立模块对象 web
2.建立模块对象的属性 编程
3.调用模块对象的方法完成模块所想要实现的功能 服务器
【源码以下】 网络
#import socket module #建立模块对象 from socket import * #建立模块对象的属性 serverSocket = socket(AF_INET, SOCK_STREAM) #Prepare a sever socket #调用方法绑定server监听的主机IP在端口8000上的链接 serverSocket.bind(('',8000)) #监听该套接字的链接尝试,5表明容许的最多maxpending个排队的链接尝试 serverSocket.listen(5) print 'The server socket is ready...' while True: #Establish the connection print 'Ready to serve...' #接收一个请求并返回一个数据对(s1,(ipaddr,port)) connectionSocket, addr = serverSocket.accept() try: #从套接字接收数据,最多8192字节,返回有接收数据组成的字符串 message = connectionSocket.recv(8192) #取接收到的字符串的第2个单词 filename = message.split()[1] #打开名字为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: #Send response message for file not found connectionSocket.send('404 Not found') #Close client socket connectionSocket.close() #关闭server的套接字 serverSocket.close()
【运行此程序】 socket
在源码文件所在的目录下建一个hello.html文件(里面写上任意文字,好比我写的Hello world!)。在其余任意一台主机上的web browser地址栏输入:http:\\serverHost:8000\hello.html回车便可看到你在html文件所写的文字(serverHost是指你运行server的主机IP)。也能够使用本机运行server脚本,在本机的browser上访问server,把serverHost换成127.0.0.1或者localhost就能够了。 函数
初学python,但愿各位不吝赐教。请与我联系:jt_2010@hust.edu.cn spa