2010-09-17 5 views
0

я пытался сделать клиент и сервер и посмотреть, что я делаюсокет в Python

#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

ПРИВЕТ !!. любой может ответить! – Str1k3r

ответ

1

При создании соединения, история не закончилась. Теперь пришло время отправить данные по соединению. Создайте простой «протокол» (*) и используйте его для передачи данных с клиента на сервер и/или обратно. Один простой пример - текстовый протокол команд, разделенных символами новой строки - это похоже на то, что делает HTTP.

(*) Протокол: соглашение между двумя сторонами о формате их сообщения.

2

Посмотрите здесь, это простой сервер эха, написанный на Python.

http://ilab.cs.byu.edu/python/socket/echoserver.html

+0

парень мне нужен чистый ответ с кодами, которые я слышал о recv и отправляю, но я пробовал, но это не работает! – Str1k3r

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 *

Смежные вопросы