首页 > 代码库 > python socket   编程之一(练习)

python socket   编程之一(练习)

    今天不算忙,难得有时间闲下来了解一下socket的通信机制原理,顺便写一个简单的案例,以方便后期学习,积累。

技术分享

一、服务端绑定一个端口号、并处于监听状态。用accept()接收发来的数据请求:

二、客户端通过地址和端口号连接服务端,并发送数据请求。

三、服务端收到后,处理请求,并发请求发给客户端。如何客户端还在连接请求,那么就循环操作。

四、客户端处理完数据之后,发送关闭请求,服务端收到请求后也开始关闭连接。

以上简介来自51cto博友分享



服务端代码

server_m.py

#!/usr/bin/env python

#-*-coding:utf-8-*-

import SocketServer          

class myMonitorHandler(SocketServer.BaseRequestHandler):

        def handle(self):

                recv_data = http://www.mamicode.com/self.request.recv(1024) ##定义接收到的数据大小

                print "From 客户端 %s : %s" % (self.client_address,recv_data)

if __name__ == "__main__":

        host,port = ‘‘,5000   #接收来自任意客户端IP,指定port为5000的数据

        server = SocketServer.ThreadingTCPServer((host,port),myMonitorHandler)

        server.serve_forever()

~        

客户端代码                       

client_m.py

import socket

name = socket.gethostname()  #随意定义,这里为获取本机主机名

host, port = "192.168.101.52",5000      #指定server ip和port 推送数据

s = socket.socket(socket.AF_INET,socket.SOCK_STREAM) #指定传输的数据类型和结构。

s.connect((host,port))   #链接以上指定的主机端口

s.sendall(name)  #将获取到的变量name值传送到服务端

s.close()        #关闭请求链接

~               


测试:

先启动服务器端#python m_server.py

后启动客户端#python m_client.py

备注:如果先启动客户端,客户端链接不到服务端会抛出异常

socket.error: [Errno 111] Connection refused

test result:

技术分享



可以任意将变量name作为一个变量参数传入 比如命令  df -h   free -m 等等




本文出自 “my_soul” 博客,请务必保留此出处http://soul455879510.blog.51cto.com/6180012/1854555

python socket   编程之一(练习)