сокет в питоне - PullRequest
       21

сокет в питоне

0 голосов
/ 17 сентября 2010

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

#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 например, затем сервер распечатывает результат на экране клиента

Ответы [ 5 ]

2 голосов
/ 17 сентября 2010

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

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

1 голос
/ 17 сентября 2010

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

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

0 голосов
/ 12 августа 2013

Я думаю, что у ваших кодов есть проблема: у вас, кажется, есть 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. *

0 голосов
/ 04 мая 2013

Для клиента:

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 голосов
/ 25 января 2012

Я думаю, что вы можете сделать что-то вроде этого:

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

А затем использовать

data = client.recv(1024)

для получения данных от клиента.

Если выЧтобы получить ввод команд от клиента, вам просто нужно выполнить команды, которые клиент отправляет, и отправить вывод обратно клиенту.

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

Это самое простое из возможных решений.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...