python第四天
2024-09-16 04:12:33
浏览器与Server交互:
import socket def handle_request(client):
buf = client.recv(1024)
client.send('HTTP/1.1 200 OK\r\n\r\n') def main():
#创建socket对象
socketServer = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
#监听端口
socketServer.bind(('127.0.0.1',8001))
#开始监听
socketServer.listen(5) while True:
#阻塞,deng...
#直到有请求连接
print '.'*30
connection,address = socketServer.accept()
#connection,代表客户端socket对象
#address,客户端地址
#handle_request(connection)
buf = connection.recv(1024)
print buf
connection.send('HTTP/1.1 200 OK\r\n\r\n')
connection.send('Hello World')
connection.close() if __name__ == '__main__':
main() Client与Server交互:
Client端:
import socket socket_client = socket.socket()
socket_client.connect(('127.0.0.1',8009))
socket_client.settimeout(5) while True:
inp = raw_input('please input:')
socket_client.sendall(inp)
res_size = socket_client.recv(1024)
print 'going to recv data size:',res_size,type(res_size)
total_size = int(res_size)
receive_size = 0
while True:
data = socket_client.recv(1024)
receive_size+=len(data)
print '---data---'
if total_size == receive_size:
print data
print '---not data---'
break
print data
if inp == 'exit':
break
socket_client.close() 单线程Server:
import socket socketServer = socket.socket()
socketServer.bind(('localhost',8341))
socketServer.listen(5)
while True:
print 'waiting...'
conn,addr = socketServer.accept()
#最多接受size
client_data = buf = conn.recv(1024)
print client_data
conn.send('wo shi fu wu duan')
conn.close() 多线程Server:
import SocketServer
import os class MyServer(SocketServer.BaseRequestHandler):
def handle(self):
# print self.request,self.client_address,self.server
# conn = self.request #每一个客户端
print 'get connection from',self.client_address
while True:
data = self.request.recv(1024)
print "Recv from [%s] cmd :%s"%(self.client_address,data)
cmd_res = os.popen(data).read()
self.request.send(str(len(cmd_res)))
self.request.sendall(cmd_res) if __name__ == '__main__':
server = SocketServer.ThreadingTCPServer(('127.0.0.1',8009),MyServer)
server.serve_forever()
最新文章
- jQuery 中bind(),live(),delegate(),on() 区别(转)
- ReportDesigner中实现保存,保存所有,注册ICommandHandler方式实现
- 循序渐进Python3(十二) --2--  web框架之django简单实现oracle数据库操作
- 优化SQL查询:如何写出高性能SQL语句
- bing壁纸xml地址
- Codeforces 375
- 为什么 JavaScript 中基本数据类型拥有 toString 之类方法?
- VBoxManage 命令行使用
- hdu1532(最大流)
- 浅谈MacOS-20155205郝博雅
- Vux配置指南
- log4j不生成日志文件的问题
- Mybatis源码分析--关联表查询及延迟加载原理(二)
- 2019-3-26WinForm窗体间如何传值的几种方法
- Android-Could not find method implementation() for arguments
- Linux版的Mimikaz
- java进程的守护进程脚本
- Linux基础命令---bzmore
- 8 stark组件 展示数据
- thinkphp3.2笔记(5)创建项目 创建模型 实例化