博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
流重定向实用程序
阅读量:4229 次
发布时间:2019-05-26

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

为了说明makefile方法的操作,下面的代码实现了多种重定向方案,其把调用者流重定向到一个用于另一个会话进程的套接字上。它的第一个函数和输出相连。当然,由socket.makefile返回的封装对象,也可以与直接文件接口的read和write方法调用和独立的标准流一起使用。

__author__ = 'JianqingJiang'# -*- coding: utf-8 -*-#用于连接非GUI程序的标准流到套接字的工具,一个GUI(或其他)程序可以使用这个与非GUI程序进行交互import sysfrom socket import *port = 50008host = 'localhost'def initListenerSocket(port=port):    #初始化在服务器模式下调用者用于监听的连接套接字    sock = socket(AF_INET,SOCK_STREAM)    sock.bind(('',port))    sock.listen(5)    conn,addr = sock.accept()    return conndef redirectOut(port=port,host=host):    #在接收之前其他连接失败,连接调用者标准输出流到一个套接字,这个套接字用于GUI监听,在收到者启动后,启动调用者    sock = socket(AF_INET,SOCK_STREAM)    sock.connect((host,port))    file = sock.makefile('w')    sys.stdout = file    return sockdef redirectIn(port=port,host=host):    #连接调用者标准输入流到用于GUI来提供功能的套接字    sock = socket(AF_INET,SOCK_STREAM)    sock.connect((host,port))    file = sock.makefile('r')    sys.stdin = file    return sockdef redirectBothAsClient(port=port,host=host):    #在这种模式下,连接调用者标准输入和输出流到相同的套接字,调用者对于服务器来说就是客户端:发送消息,接受响应答复    sock = socket(AF_INET,SOCK_STREAM)    sock.connect((host,port))    ofile = sock.makefile('w')    iflie = sock.makefile('r')    sys.stdout = ofile    sys.stdin = iflie    return sockdef redirectBothAsServer(port=port,host=host):    #在这种模式下,连接调用者标准输入和输出流到相同的套接字,调用者对于客户端来说就是服务器:接受消息,发送响应答复    sock = socket(AF_INET,SOCK_STREAM)    sock.bind(('',port))    sock.listen(5)    conn,addr = sock.accept()    ofile = sock.makefile('w')    iflie = sock.makefile('r')    sys.stdout = ofile    sys.stdin = iflie    return conn

从二进制到文本的转换

原始套接字可以传输二进制字节字符串,但是在文本模式下打开封装文件,它们的内容在输入和输出时会自动转换成文本字符串。如果通过标准流工具,如可以写入文本字符串print内置函数,可以获得,那么就需要文字模式文件封装。然而,在大多数情况中,直接处理原始套接字时,文本仍需手动编码为字节字符串。

转载地址:http://nknqi.baihongyu.com/

你可能感兴趣的文章
人工智能与机器学习学习笔记(二)
查看>>
Run Your Own Web Server Using Linux & Apache
查看>>
Java I/O
查看>>
SQL Server 2005 T-SQL Recipes: A Problem-Solution Approach
查看>>
Core Python Programming
查看>>
Creating Database Web Applications with PHP and ASP
查看>>
ASP.NET 2.0 Demystified
查看>>
Pattern-Oriented Software Architecture, Volume 2, Patterns for Concurrent and Networked Objects
查看>>
Pattern-Oriented Software Architecture, Volume 1: A System of Patterns
查看>>
Database Programming with Visual Basic® .NET and ADO.NET: Tips, Tutorials, and Code
查看>>
Visual Basic 2005 Express: Now Playing
查看>>
Jakarta Struts Cookbook
查看>>
AspectJ Cookbook
查看>>
IntelliJ IDEA in Action
查看>>
HTML Professional Projects
查看>>
Python Cookbook, Second Edition
查看>>
Java Extreme Programming Cookbook
查看>>
XSLT Cookbook
查看>>
Java Programming with Oracle JDBC
查看>>
Hack Proofing Your Network (Second Edition)
查看>>