python中的套接字
我试着做客户端和服务器,看看我做了什么python中的套接字,python,sockets,Python,Sockets,我试着做客户端和服务器,看看我做了什么 #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)) 第一件事:目前一切正常,但我想在客户端连接
#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
,例如,然后服务器在客户端屏幕中打印结果。当您创建连接时,故事还没有结束。现在是通过连接发送数据的时候了。创建一个简单的“协议”(*),并使用它将数据从客户端传输到服务器和/或后端。一个简单的例子是由换行符分隔的命令的文本协议-这类似于HTTP
(*)协议:双方就通信格式达成的协议。建立连接时,故事还没有结束。现在是通过连接发送数据的时候了。创建一个简单的“协议”(*),并使用它将数据从客户端传输到服务器和/或后端。一个简单的例子是由换行符分隔的命令的文本协议-这类似于HTTP
(*)协议:双方就通信格式达成的协议。看这里,这是一个用Python编写的简单echo服务器
看这里,这是一个用Python编写的简单echo服务器
我想你可能想做这样的事情:
client, addr = OK.accept()
client.send("Hello Admin")
然后使用
data = client.recv(1024)
从客户端获取数据
from commands import getoutput
client.send(getoutput(client.recv(1024)))
如果希望从客户机获取命令输入,只需执行客户机发送的命令并将输出发送回客户机
from commands import getoutput
client.send(getoutput(client.recv(1024)))
这是可能的最简单的解决方案。我想你可能想做如下事情:
client, addr = OK.accept()
client.send("Hello Admin")
然后使用
data = client.recv(1024)
从客户端获取数据
from commands import getoutput
client.send(getoutput(client.recv(1024)))
如果希望从客户机获取命令输入,只需执行客户机发送的命令并将输出发送回客户机
from commands import getoutput
client.send(getoutput(client.recv(1024)))
这是最简单的解决方案。对于客户:
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)
对于客户:
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)
我认为您的代码有一个问题: 您似乎有
OK=socket.socket()
,但我认为应该是:
OK=socket.socket(socket.AF\u INET,socket.STREAM)
,这将有助于您建立连接。您的服务器出现问题:OK。列表n(1)
应该是OK。请听(1)
。还有,不要忘记send()
和recv()
哪个对客户有效
#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系统。*我认为您的代码有一个问题: 您似乎有
OK=socket.socket()
,但我认为应该是:
OK=socket.socket(socket.AF\u INET,socket.STREAM)
,这将有助于您建立连接。您的服务器出现问题:OK。列表n(1)
应该是OK。请听(1)
。还有,不要忘记send()
和recv()
哪个对客户有效
#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系统。*伙计,我需要清楚的答案,并附上我听说的关于recv和send的代码,但我尝试了一下,但效果不一样!伙计,我需要清楚的答案和代码,我听说了recv和send,但我尝试了,但它的工作方式不一样!你好谁都能回答!?你好谁都能回答!?