繁体   English   中英

python中的套接字

[英]socket in 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例如,然后服务器在客户端屏幕上打印结果

看这里,这是一个用Python编写的简单回显服务器。

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

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

(*)协议:双方之间关于其通讯格式的协议。

对于客户:

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_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系统。*

我认为您可能想要执行以下操作:

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

然后用

data = client.recv(1024)

从客户端获取数据。

如果要从客户端获取命令输入,则只需执行客户端发送的命令,然后将输出发送回客户端即可。

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM