【Python自动化运维之路Day9】Socket
2016-07-09 08:15
495 查看
socket也可以认为是套接字是一种源IP地址和目的IP地址以及源端口号和目的端口号的组合.网络化的应用程序在开始任何通讯之前都必须要创建套接字.就像电话的插口一样,没有它就没办法通讯.
socket即是一种特殊的文件,一些socket函数就是对其进行的操作(读/写IO、打开、关闭)
我们知道两个进程如果需要进行通讯最基本的一个前提能能够唯一的标示一个进程,在本地进程通讯中我们可以使用PID来唯一标示一个进程,但PID只在本地唯一,网络中的两个进程PID冲突几率很大,这时候我们需要另辟它径了,我们知道IP层的ip地址可以唯一标示主机,而TCP层协议和端口号可以唯一标示主机的一个进程,这样我们可以利用ip地址+协议+端口号唯一标示网络中的一个进程。
看图说话socket作用:
Socket Client2
socket即是一种特殊的文件,一些socket函数就是对其进行的操作(读/写IO、打开、关闭)
我们知道两个进程如果需要进行通讯最基本的一个前提能能够唯一的标示一个进程,在本地进程通讯中我们可以使用PID来唯一标示一个进程,但PID只在本地唯一,网络中的两个进程PID冲突几率很大,这时候我们需要另辟它径了,我们知道IP层的ip地址可以唯一标示主机,而TCP层协议和端口号可以唯一标示主机的一个进程,这样我们可以利用ip地址+协议+端口号唯一标示网络中的一个进程。
看图说话socket作用:
#!/usr/bin/env python # -*- coding:utf-8 -*- # Author:Alex Li import socket import os ,json ip_port=('192.168.11.150',8009) #买手机 s=socket.socket() #拨号 s.connect(ip_port) #发送消息 welcome_msg = s.recv(1024) print("from server:",welcome_msg.decode()) while True: send_data=input(">>: ").strip() if len(send_data) == 0:continue cmd_list = send_data.split() if len(cmd_list) <2:continue task_type = cmd_list[0] if task_type == 'put': abs_filepath = cmd_list[1] if os.path.isfile(abs_filepath): file_size = os.stat(abs_filepath).st_size filename = abs_filepath.split("\\")[-1] print('file:%s size:%s' %(abs_filepath,file_size)) msg_data = {"action":"put", "filename":filename, "file_size":file_size} s.send( bytes(json.dumps(msg_data),encoding="utf-8") ) server_confirmation_msg = s.recv(1024) confirm_data = json.loads(server_confirmation_msg.decode()) if confirm_data['status'] ==200: print("start sending file ",filename) f = open(abs_filepath,'rb') for line in f: s.send(line) print("send file done ") else: print("\033[31;1mfile [%s] is not exist\033[0m" % abs_filepath) continue else: print("doesn't support task type",task_type) continue #s.send(bytes(send_data,encoding='utf8')) #收消息 recv_data=s.recv(1024) print(str(recv_data,encoding='utf8')) #挂电话 s.close()
Socket Client2
相关文章推荐
- python学习——python解释器
- python学习——安装python
- python socket和socketserver
- 大家的编程(Python入门)-第三周Quiz
- python27(32位)安装模块报错“error: Unable to find vcvarsall.bat”
- python27(32位)安装RTree
- python socket
- Python 语言及其应用 Chapter_10 Exercise
- python 字典多种方法删除 keys
- Python 语言及其应用 Chapter_10 Note 3 时间time
- python3.5 与 mysql 交互
- Python basic note 01
- lxml解析xml文件
- 搭建python3环境
- python 语法树生成过程
- cmath module(针对复数)
- Python的优缺点
- [Python学习笔记]2——Python使用函数
- math module
- [python小工具]加减法出题器