建立socket
bind到特定的端口
listen指定连接数量
accept接受连接
建立连接后用read/write通讯
完成后用close清理资源
import socket 导入socket库
host='' 指明需要绑定的ip,为空应该是绑定本机所有Ip
port=51423 绑定的端口号
s=socketsocket(socketAF_INET,socketSOCK_STREAM) 创建socket
ssetsockopt(socketSOL_SOCKET,socketSO_REUSEADDR,1) 设置socket的属性
sbind((host,port)) 绑定端口
slisten(1) 设置只允许一个client连接
print ("Server is running on port %d;press Ctrl-C to terminate" % port) 打印信息,提示端口号
while 1: 死循环等待连接
clientsock,clientaddr=saccept() 等待直至有client连接,分别返回通讯用的socket和client的地址
clientfile=clientsockmakefile('rw',0) 创建用于通讯用的虚拟文件
clientfilewrite("Welcome,"+str(clientaddr)+"\n") 向client发送消息
clientfilewrite("please enter a string:") 向client发送消息
line=clientfilereadline()strip() 读取client消息
clientfilewrite("you entered %d characters\n" % len(line)) 向client发送消息
clientfileclose() 关闭虚拟文件
clientsockclose() 关闭通讯用socket,通讯结束 def handshake(conn):
key =None
data = connrecv(8192)
if not len(data):
return False
for line in datasplit('\r\n\r\n')[0]split('\r\n')[1:]:
k, v = linesplit(': ')
if k =='Sec-WebSocket-Key':
key =base64b64encode(hashlibsha1(v +'258EAFA5-E914-47DA-95CA-C5AB0DC85B11')digest())
if not key:
connclose()
return False
response ='>
使用多线程,下面的代码,简单实现一个多线程的web服务器:
#coding=utf-8import socket
import threading
from time import sleep
def response(sock, addr):
print "收到请求"
data = sockrecv(1024)
print data
socksend(html)
sockclose()
html = '''>使用pip或easy_install可以管理和安装python的package包,实际上它们都是从pypi服务器中搜索和下载package的。目前在pypi服务器上,有超过三万多个package,同时还允许我们将自己的代码也上传发布到服务器上。这样,世界上的所有人都能使用pip或easy_install来下载使用我们的代码了。
具体步骤如下:
首先创建项目文件和setup文件。
目录文件结构如下:
project/
simpletest/
__init__py
testpy
setuppy
假设项目文件只有一个simpletest包,里面有一个testpy文件。
创建的setuppy文件格式大致如下,其中,install_requires字段可以列出依赖的包信息,用户使用pip或easy_install安装时会自动下载依赖的包。详细的格式参考文档。
from setuptools import setup, find_packages
setup(
name = 'simpletest',
version = '001',
keywords = ('simple', 'test'),
description = 'just a simple test',
license = 'MIT License',
install_requires = ['simplejson>=11'],
author = 'yjx',
author_email = 'not@allcom',
packages = find_packages(),
platforms = 'any',
)
然后将代码打包。
打包只需要执行python
setuppy xxx命令即可,其中xxx是打包格式的选项,如下:
# 以下所有生成文件将在当前路径下 dist 目录中
python setuppy bdist_egg # 生成easy_install支持的格式
python setuppy sdist # 生成pip支持的格式,下文以此为例
发布到pypi。
发布到pypi首先需要注册一个账号,然后进行如下两步:
注册package。输入python setuppy register。
上传文件。输入python setuppy sdist upload。
安装测试
上传成功后,就可以使用pip来下载安装了。
另外,pypi还有一个测试服务器,可以在这个测试服务器上做测试,测试的时候需要给命令指定额外的"-r"或"-i"选项,如python
setuppy register -r "",python
setuppy sdist upload -r "",pip
install -i "" simpletest。
发布到测试服务器的时候,建议在linux或cygwin中发布,如果是在windows中,参考文档,需要生成pypirc文件
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)