python socket编程思路

socket编程思路

TCP服务端:

创建套接字,绑定套接字到本地IP与端口

   # socket.socket(socket.AF_INET,socket.SOCK_STREAM) , s.bind()

开始监听连接                   #s.listen()

进入循环,不断接受客户端的连接请求              #s.accept()

然后接收传来的数据,并发送给对方数据         #s.recv() , s.sendall()

传输完毕后,关闭套接字                     #s.close()

TCP客户端:

创建套接字,连接远端地址

       # socket.socket(socket.AF_INET,socket.SOCK_STREAM) , s.connect()

连接后发送数据和接收数据          # s.sendall(), s.recv()

传输完毕后,关闭套接字          #s.close()

Socket编程之服务端代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
root@yangrong: / python # catday5-socket-server.py
#!/usr/bin/python
import  socket    #socket模块
import  commands    #执行系统命令模块
HOST = '10.0.0.245'
PORT = 50007
s =  socket.socket(socket.AF_INET,socket.SOCK_STREAM)    #定义socket类型,网络通信,TCP
s.bind((HOST,PORT))    #套接字绑定的IP与端口
s.listen( 1 )          #开始TCP监听
while  1 :
        conn,addr = s.accept()    #接受TCP连接,并返回新的套接字与IP地址
        print 'Connected by' ,addr     #输出客户端的IP地址
        while  1 :
                 data = conn.recv( 1024 )     #把接收的数据实例化
                cmd_status,cmd_result = commands.getstatusoutput(data)    #commands.getstatusoutput执行系统命令(即shell命令),返回两个结果,第一个是状态,成功则为0,第二个是执行成功或失败的输出信息
                 if  len (cmd_result.strip())  = = 0 :    #如果输出结果长度为0,则告诉客户端完成。此用法针对于创建文件或目录,创建成功不会有输出信息
                         conn.sendall( 'Done.' )
                 else :
                        conn.sendall(cmd_result)    #否则就把结果发给对端(即客户端)
conn.close()      #关闭连接

Socket编程之客户端代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
root@yangrong: / python # catday5-socket-client.py
#!/usr/bin/python
import  socket
HOST = '10.0.0.245'
PORT = 50007
s = socket.socket(socket.AF_INET,socket.SOCK_STREAM)       #定义socket类型,网络通信,TCP
s.connect((HOST,PORT))        #要连接的IP与端口
while  1 :
        cmd = raw_input ( "Please input cmd:" )        #与人交互,输入命令
        s.sendall(cmd)       #把命令发送给对端
        data = s.recv( 1024 )      #把接收的数据定义为变量
         print  data          #输出变量
s.close()    #关闭连接
节选自https://blog.csdn.net/rebelqsp/article/details/22109925
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值