This comment is reply for 7142 nu: 題意が分かりにくかったのでしょうか。申し...(echoクライアント). Go to thread root.
nu #7143(2008/08/17 00:52 GMT) [ Python ] Rating0/0=0.00
ええと、さっきのは#7138さんへのレスです。それと、コードが間違っていたので修正します。 setmode()はmsvcrtの関数でした。
「netcatのクライアント部分と同等」であるかは、netcatコマンドの仕様に詳しくないので、申し訳ありませんが何ともいえません。
echoはR.Stevensのunpvのようなネットワークプログラミングの教科書の最初のサンプルとして出てくることが多いでしょうから、その多言語版クックブックという観点を考えていました。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35
#!/usr/bin/env python import sys import os import socket from threading import Thread import msvcrt class Receiver(Thread): def __init__(self, sock): Thread.__init__(self) self.src = sock def run(self): for data in iter(lambda: self.src.recv(8192), ""): os.write(sys.stdout.fileno(), data) def main(args): if len(args) < 3: print >>sys.stderr, "usage: %s host port" % args[0] sys.exit(1) if sys.platform == 'win32': msvcrt.setmode(sys.stdin.fileno(), os.O_BINARY) msvcrt.setmode(sys.stdout.fileno(), os.O_BINARY) sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) sock.connect((args[1], int(args[2]))) receiver = Receiver(sock) receiver.start() for data in iter(lambda: os.read(sys.stdin.fileno(), 8192), ""): sock.send(data) sock.shutdown(socket.SHUT_WR) receiver.join() sock.close() return 0 if __name__ == '__main__': main(sys.argv)
Rating0/0=0.00-0+
[ reply ]
nu #7143() [ Python ] Rating0/0=0.00
ええと、さっきのは#7138さんへのレスです。それと、コードが間違っていたので修正します。 setmode()はmsvcrtの関数でした。
「netcatのクライアント部分と同等」であるかは、netcatコマンドの仕様に詳しくないので、申し訳ありませんが何ともいえません。
echoはR.Stevensのunpvのようなネットワークプログラミングの教科書の最初のサンプルとして出てくることが多いでしょうから、その多言語版クックブックという観点を考えていました。
Rating0/0=0.00-0+