- 论坛徽章:
- 0
|
我的socket程序,在客户端使用cd 命令和错误系统命令时就死在那里不动了,我现在唯一找到它们的共同点,就是执行不返回值,不知道是不是这个原因,cd才无法使用的。
现在我只能判断popen(data).readline()是否有返回值来避免使用cd和错误系统命令,但是如果不能使用cd 命令,这程序的实用性就大打折扣了。
请高手帮忙想想办法,如下,是我的代码,谢谢!!
server(192.168.8.155)
[root@linuxas4 socket]# cat server_try.py
#!/usr/bin/env python
from socket import *
from time import ctime
import os
HOST=''
PORT=21567
BUFSIZ=10240
ADDR=(HOST,PORT)
tcpSerSock=socket(AF_INET,SOCK_STREAM)
tcpSerSock.bind(ADDR)
tcpSerSock.listen(5)
while True:
print 'waiting........'
tcpCliSock,addr=tcpSerSock.accept()
print '...connected from:',addr
while True:
data=tcpCliSock.recv(BUFSIZ)
if not data:
break
read=os.popen(data)
for show in read:
tcpCliSock.send('%s' % show)
tcpCliSock.close()
tcpSerSock.close()
client(192.168.8.156)
[root@mysql socket]# cat client.py
#!/usr/bin/env python
import os
from socket import *
HOST='192.168.8.155'
PORT=21567
BUFSIZ=10240
ADDR=(HOST,PORT)
tcpCliSock=socket(AF_INET,SOCK_STREAM)
tcpCliSock.connect(ADDR)
while True:
data=raw_input('>')
if not data:
break
tcpCliSock.send(data)
os.popen("sleep 1")
show=tcpCliSock.recv(BUFSIZ)
print '%s' % show
tcpCliSock.close()
[ 本帖最后由 yankai0403 于 2009-10-19 10:57 编辑 ] |
|