Str1k3r
Str1k3r

Reputation: 21

socket in python

i tried to do client and server and look what i do

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

and another one for client

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

First thing : for now every thing is ok but i want when client connect to server : server print "Hello Admin" in client screen

second thing : i want make like input command ! like

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

then client enter dir for example then server print the result in client screen

Upvotes: 0

Views: 939

Answers (5)

Cold Diamondz
Cold Diamondz

Reputation: 521

I think that your codes has an issue: you seem to have OK = socket.socket(), but I think it should be: OK = socket.socket(socket.AF_INET, socket.STREAM), which would help if your making a connection. And your server has a problem: OK.listn(1) should be OK.listen(1). And, don't forget about send() and 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

which should work for the client

#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

Note: These fixes would work for Windows, I don't know about Unix systems.*

Upvotes: 0

skote_vahshat
skote_vahshat

Reputation: 1

For Client:

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)

Upvotes: 0

user1168906
user1168906

Reputation: 321

I think you might want to do something like this:

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

And then use

data = client.recv(1024)

to get data from the client.

If you want to get command input from the client, you just need to execute the commands the client sends and send the output back back to the client.

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

Thats about the easiest solution possible.

Upvotes: 0

ohe
ohe

Reputation: 3653

Look here, this is a simple echo server written in Python.

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

Upvotes: 2

Eli Bendersky
Eli Bendersky

Reputation: 273366

When you create a connection, the story isn't over. Now it's time to send data over the connection. Create a simple "protocol" (*) and use it to transfer data from client to server and/or back. One simple example is a textual protocol of commands separated by newlines - this is similar to what HTTP does.

(*) Protocol: an agreement between two parties on the format of their communication.

Upvotes: 1

Related Questions