免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 3045 | 回复: 1
打印 上一主题 下一主题

socket无法使用cd命令 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-10-19 10:43 |只看该作者 |倒序浏览
我的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 编辑 ]

论坛徽章:
0
2 [报告]
发表于 2009-10-19 10:56 |只看该作者

回复 #1 yankai0403 的帖子

[root@mysql socket]# ./client.py
>pwd
/root/python/socket

>ifconfig
eth0      Link encap:Ethernet  HWaddr 00:0C:290:46:F8  
          inet addr:192.168.8.155  Bcast:192.168.8.255  Mask:255.255.255.0
          inet6 addr: fe80::20c:29ff:fed0:46f8/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:1121109 errors:0 dropped:0 overruns:0 frame:0
          TX packets:522080 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:94165068 (89.8 MiB)  TX bytes:165062324 (157.4 MiB)
          Interrupt:10 Base address:0x2000

lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:16436  Metric:1
          RX packets:135314 errors:0 dropped:0 overruns:0 frame:0
          TX packets:135314 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:10927374 (10.4 MiB)  TX bytes:10927374 (10.4 MiB)


>cd /home/
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP