博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Python 网络编程socket_server单线程响应请求
阅读量:7040 次
发布时间:2019-06-28

本文共 2124 字,大约阅读时间需要 7 分钟。

hot3.png

说明:刚开始接触python网络编程,使用socket编写一个简单的单线程server。socket模块提供了一个工厂函数,也被称为socket,开发者可以调用函数以生成一个套接字对象S。要想执行网络层操作,可以调用S上的方法。在客户程序中,可以调用S.connect连接到一个服务器。在服务器程序中,可以调用S.bind和S.listen等待客户程序的连接。在客户程序请求连接时,服务器程序可以调用S.accept接受请求,该方法将返回连接到客户程序的另一个套接字对象S1.在有了一个连接的套接字对象之后,就可以调用该对象的send方法传输数据,调用该对象的recv方法接收数据了。关于socket模块提供的函数和socket对象提供的方法请读者参阅python相关的技术书籍(例如《python技术手册》)。

分三步:

1.创建模块对象

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()

【运行此程序】

在源码文件所在的目录下建一个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

转载于:https://my.oschina.net/u/185037/blog/94174

你可能感兴趣的文章
VOA 2009/11/07 IN THE NEWS - A Second Term for Karzai; US Jobless Rate at 10.2%
查看>>
freemaker模板学习笔记
查看>>
Redis配置文件解析+单机多实例(主从)配置
查看>>
Android消息推送机制
查看>>
【leetcode】Reverse Linked List II (Java)
查看>>
Linux系统无线网卡的安装
查看>>
java之jdbc_采用PreparedStatement添加数据
查看>>
iptables详解
查看>>
Linux学习教程推荐下载
查看>>
gridview 控件,.net用法
查看>>
jvisualvm安装btrace插件,更新设置(java.net网站已关闭)
查看>>
Java IO : 流,以及适配器模式的应用
查看>>
一个月减肥计划
查看>>
UIGestureRecognizer手势识别器
查看>>
jar包制作
查看>>
华为服务器RH2288H V2连接 华为存储S2600T
查看>>
ActiveMQ快速入门
查看>>
HTTP请求头和响应头部包括的信息有哪些?
查看>>
Spring学习总结(2)——Spring的常用注解
查看>>
JSON
查看>>