『求助』关于在Windows下两个进程间数据交换的方法

『求助』关于在Windows下两个进程间数据交换的方法

大家好!首先谢谢你们的关注!我遇到一个问题,想过很多方法,却不知道该如何解决,所以请大家帮忙看看。

我所写的Python程序要与同一台电脑里另外的一个或多个Script(脚本文件)相连接。比方说,启动一个脚本文件的同时会发送一条信息或者一个数据给我的Python程序,然后我的程序对此作出响应(acknowledge)。这两个进程间的连接是双向的,并且在Windows系统下可实现的,请问各位有哪些可行的方法呢?具体该如何操作呢?

在此先谢谢各位了!
socket
谢谢你!你指的是用网络用TCP吗?那具体该怎么做呢?

查过好像可以用os.pipe创建管道,但不知是否可以创建命名管道(named pipe)?网上它的例子很少,通常都是在Unix下的。实在不清楚该怎么用它(os.pipe)
用Windows的消息机制实现比较好吧
一个socket服务器程序,接受各个客户端的消息了。
socket  pipe应该都可以。
socket
谢谢你们的答复!

我现在决定采用你们所说的Socket。试图在同一台电脑上用Python写一个Server和一个Client。结果在运行过程中总是出错。请问这是为什么?因为我才接触Socket,也许会犯一些很低级的错误。请大家指点指点!谢谢!
Server:
import socket

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.bind(('localhost', 50000))
s.listen(1)

try:
    while True:
        komm, addr = s.accept()
        while True:
            data = komm.recv(1024)

            if not data:
                komm.close()
                break

            print "[%s] %s" % (addr[0], data)
            nachricht = raw_input("Antwort: "
            komm.send(nachricht)
finally:
    s.close()

Client:
import socket

ip = raw_input("IP-Adresse: "
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect((ip, 50001))

try:
    while True:
        nachricht = raw_input("Nachricht: "
        s.send(nachricht)
        antwort = s.recv(1024)
        print "[%s] %s" % (ip,antwort)
finally:
    s.close()

不管我输入localhost还是127.0.0.1,结果都是连接不成功。到底是为什么呢?


QUOTE:
原帖由 shhgs 于 2008-7-22 20:22 发表
你的server听50000的,你的client连50001的。能成功不是有鬼了?

你说的对,是我自己理解错了。以为不同的程序拥有自己的端口,Client连接,其实应该给出Server的地址和端口。

现在问题已经解决了,谢谢大家!