我的第一个基于python的socket程序

看了1个星期的python视频,基本简单了解了下python的基本语法等等,学习到socket觉得有必要写一个简单的例子保存,既能练手也能供以后参考,例子需求,客户端输入相关命令,服务端返回命令结果

server端

#!/bin/env python
import os
import socket
import commands
host = '192.168.100.100'
port = 10000
sk = socket.socket(socket.AF_INET,socket.SOCK_STREAM)   #定义socket的类型和socket的协议
sk.bind((host,port))         #绑定主机和端口号
sk.listen(1)                 #开始监听
conn,addr = sk.accept()      #开始接受请求,且把结果分别赋值给变量conn(对象)和addr(客户端地址)
while True:
    data = conn.recv(4096)
    result = commands.getoutput(data) #这里之前用的os.popen,但是错误命令时服务端无法返回数据(应该是结束符问题)
    conn.sendall(result)
conn.close()

客户端代码如下:

#!/bin/env python
import socket
host = '192.168.100.100'
port = 10000
sk = socket.socket(socket.AF_INET,socket.SOCK_STREAM)   #定义socket的类型和socket的协议
sk.connect((host,port))                 #socket客户端连接服务端
while True:
     cmd = raw_input('cmd:')            #定义客户端要发送的命令
     sk.sendall(cmd)                    #客户端发送命令
     data = sk.recv(4096)               #客户端接收返回
     if not data:
         break
     print data
sk.close()


服务端的流程:定义socket的类型和socket支持的协议==>绑定主机和端口==>开始监听==>等待接收数据==>接受客户端数据==>返回结果给客户端


客户端流程:   定义socket的类型和socket支持的协议==>连接服务端(主机和端口)==>发送数据==>从服务端返回结果

纯粹个人见解,求指正,勿喷,和谐家园!!!


你可能感兴趣的:(python)