- 論壇徽章:
- 0
|
我的socket程序,在客戶端使用cd 命令和錯(cuò)誤系統(tǒng)命令時(shí)就死在那里不動(dòng)了,我現(xiàn)在唯一找到它們的共同點(diǎn),就是執(zhí)行不返回值,不知道是不是這個(gè)原因,cd才無(wú)法使用的。
現(xiàn)在我只能判斷popen(data).readline()是否有返回值來(lái)避免使用cd和錯(cuò)誤系統(tǒng)命令,但是如果不能使用cd 命令,這程序的實(shí)用性就大打折扣了。
請(qǐng)高手幫忙想想辦法,如下,是我的代碼,謝謝!
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 編輯 ] |
|