python -- 多线程SocketServer2

服务器端代码:

root@kali:~/python/socket/ftp# pwd
/root/python/socket/ftp
root@kali:~/python/socket/ftp# ls
socket_server_ftp1.py  tab.py  tab.pyc


root@kali:~/python/socket/ftp# cat socket_server_ftp1.py 
#!/usr/bin/python
# --*-- coding:utf-8 --*--
import tab
import os
import SocketServer

class myTCPHandler(SocketServer.BaseRequestHandler):#定义类,继承SocketServer.BaseRequestHandler父类
    def handle(self):
        print 'got connection from :', self.client_address
        while 1:
            self.data = self.request.recv(4096)
            print self.data
            if not self.data:break#不存在的命令就结束
            print 'will run this on server:', self.data
            cmd = "%s 2>/dev/null" % self.data
            result = os.popen(cmd).read()#用户输入数据,并读取数据,赋值给result值
            if not result:
                result = 'Error'
            self.request.sendall(result)

host,port = '',8888
try:
    server = SocketServer.ThreadingTCPServer((host,port),myTCPHandler)
    server.serve_forever()
except  KeyboardInterrupt:
    server.shutdown()

root@kali:~/python/socket/ftp# 

客户端代码:

root@kali:~/python/socket/ftp# 
root@kali:~/python/socket/ftp# pwd
/root/python/socket/ftp
root@kali:~/python/socket/ftp# ls
socket_clent_ftp1.py  tab.py  tab.pyc


root@kali:~/python/socket/ftp# cat socket_clent_ftp1.py 
#!/usr/bin/env python
# --*-- coding:utf-8 --*--
import tab
import socket

#客户端Ip地址192.168.72.130

h = '192.168.72.129'
p = 8888 
s = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
s.connect((h,p))
while 1:
    INPUT = raw_input("Input:")
    s.send(INPUT)
    received_data = s.recv(8096)


    print "Received from server:", received_data
s.close()
root@kali:~/python/socket/ftp# 

运行情况
服务器端:

root@kali:~/python/socket/ftp# python socket_server_ftp1.py
got connection from : ('192.168.72.130', 52921)
ls
will run this on server: ls
ls -a
will run this on server: ls -a
pwd
will run this on server: pwd
got connection from : ('192.168.72.130', 52948)
ls -a
will run this on server: ls -a


#结束相关进程信息
root@kali:~/python/socket/ftp# lsof -i :8888
COMMAND   PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
python  15807 root    3u  IPv4 135924      0t0  TCP *:8888 (LISTEN)
python  15807 root    4u  IPv4 135948      0t0  TCP 192.168.72.129:8888->192.168.72.130:52921 (ESTABLISHED)
python  15807 root    5u  IPv4 139022      0t0  TCP 192.168.72.129:8888->192.168.72.130:52948 (ESTABLISHED)
root@kali:~/python/socket/ftp# kill -9 15807
root@kali:~/python/socket/ftp# kill -9 15807
-bash: kill: (15807) - No such process
[2]+  Killed                  python socket_server_ftp1.py
root@kali:~/python/socket/ftp# 

客户端1:

root@kali:~/python/socket/ftp# vi socket_clent_ftp1.py
root@kali:~/python/socket/ftp# python socket_clent_ftp1.py
Input:ls
Received from server: socket_server_ftp1.py
tab.py
tab.pyc

Input:ls -a
Received from server: .
..
socket_server_ftp1.py
tab.py
tab.pyc

Input:pwd
Received from server: /root/python/socket/ftp

Input:


#结束相关进程信息
root@kali:~/python/socket/ftp# lsof -i :8888
COMMAND   PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
python  15373 root    3u  IPv4 134162      0t0  TCP 192.168.72.130:52921->192.168.72.129:8888 (CLOSE_WAIT)
python  16933 root    3u  IPv4 137536      0t0  TCP 192.168.72.130:52948->192.168.72.129:8888 (CLOSE_WAIT)
root@kali:~/python/socket/ftp# kill -9 15373
root@kali:~/python/socket/ftp# kill -9 16933
[2]+  Killed                  python socket_clent_ftp1.py
root@kali:~/python/socket/ftp# 

客户端2:

root@kali:~/python/socket/ftp# python socket_clent_ftp1.py 
Input:ls -a
Received from server: .
..
socket_server_ftp1.py
tab.py
tab.pyc

Input:



#结束相关进程信息
root@kali:~/python/socket/ftp# lsof -i :8888
[3]+  Killed                  python socket_clent_ftp1.py
root@kali:~/python/socket/ftp# 
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

徐为波

看着给就好了,学习写作有点累!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值