2010-09-17 75 views
0

我试图做的客户端和服务器,看看我做什么插座蟒蛇

#Server 
import socket 
Host='' 
Port=305 
OK=socket.socket() 
OK.bind((Host,Port)) 
OK.listn(1) 
OK.accept() 

,另一个用于客户端

#Client 
impot socket 
Host='192.168.1.4' 
Port=305 
OK=socket.socket() 
OK.connect((Host,Port)) 

第一件事:现在每一件事情是确定的,但我想,当客户端连接到服务器: 服务器在客户端屏幕上打印“Hello Admin”

第二件事:我想让输入命令像!像

COM=raw_input('enter you command system:') 

然后客户端输入dir例如服务器,然后打印出结果在客户端屏幕

+0

HELLO!。任何人都可以回答!? – Str1k3r 2010-09-17 16:25:57

回答

1

当你创建一个连接,故事还没有结束。现在是时候通过连接发送数据了。创建一个简单的“协议”(*)并使用它来将数据从客户端传输到服务器和/或返回。一个简单的例子是由换行符分隔的命令的文本协议 - 这与HTTP所做的相似。

(*)协议:双方就其通信格式达成的协议。

0

我想你可能想要做这样的事情:

client, addr = OK.accept() 
client.send("Hello Admin") 

然后用

data = client.recv(1024) 

从客户端获取数据。

如果您想从客户端获得命令输入,您只需执行客户端发送的命令并将输出发送回客户端。

from commands import getoutput 
client.send(getoutput(client.recv(1024))) 

这就是最简单的解决方案。

0

对于客户:

import os 

import sys 

impot socket 

Host=raw_input ("Please enter ip : ") 

Port=raw_input ("please Enter port :") 

OK=socket.socket() 

OK.connect((Host,Port)) 

print " Enter Command") 

cmd = raw_input() 

os.system(cmd) 
0

我认为你的代码有一些问题: 你似乎有OK = socket.socket(),但我认为它应该是: OK = socket.socket(socket.AF_INET, socket.STREAM),如果你建立连接,这将有助于。而你的服务器有问题:OK.listn(1)应该是OK.listen(1)。并且,请不要忘记send()recv()

#Client 
import socket 
Host='192.168.1.4' 
Port=305 
OK=socket.socket(socket.AF_INET, socket.STREAM) 
OK.connect((Host,Port)) 
while True: 
    com = raw_input("Enter your command: ") 
    OK.send(com) 
    data = OK.recv(5000) #Change the buffer if you need to, I have it setup to run 5000 
    print "Received:\n" + data 

应该为客户

#Server 
import socket 
import os 
Host='' 
Port=305 
OK=socket.socket(socket.AF_INET, socket.STREAM) 
OK.bind((Host,Port)) 
OK.listen(1) 
conn, addr = OK.accept() 
while True: 
    data = conn.recv(2048) #Change the buffer if needed 
    if data == "": 
     break 
    r = os.system(data) 
    conn.send(str(r)) #Note this will send 0 or 1, 0 = ran, 1 = error 

注意工作:这些修补程序将可在Windows,我不知道Unix系统*