首页 > 代码库 > Python Socket编程
Python Socket编程
因需要做一个监测TCP数据内容的小插件,学习了局域网内部的封装好的传输软件Socket:
一、Socket的简介如下:
网络上的两个程序通过一个双向的通信连接实现数据的交换,这个连接的一端称为一个socket。
建立网络通信连接至少要一对端口号(socket)。socket本质是编程接口(API),对TCP/IP的封装,TCP/IP也要提供可供程序员
做网络开发所用的接口,这就是Socket编程接口;HTTP是轿车,提供了封装或者显示数据的具体形式;Socket是发动机,
提供了网络通信的能力。
二、Socket的操作流程如下:
如上图所示:TCP客户端和TCP服务器端都需要进行上述的步骤
TCP服务端的配置步骤:
Step1:建立Socket对象 Sk = socket.socket()
Step2:把一个地址族中的特定地址赋给socket Sk.bind((host,port))
Step3:开启监听进程等待客户端链接服务端 Sk.listen(1)
Step4:接受客户端的申请,获取客户端的IP地址及其端口PORT clnt, addr = Sk.accept()
Step5:建立好连接之后,等待接受客户端的数据 data = http://www.mamicode.com/clnt.recv(1024)
Step6:应答客户机的请求,将对应的数据发回去 clnt.sendall(data)
Step7:关闭socket对象 Sk.close()
TCP客户端的配置步骤:
Step1:建立Socket对象 S = socket.socket()
Step2:把连接客户端到对应的服务端 S.connect((host, port))
Step3:连接成功后向服务端发送数据 S.sendall(cmd)
Step4:接等待服务端的回应数据 data = http://www.mamicode.com/S.recv(1024)
Step5:关闭socket对象 Sk.close()
程序如下(主机端+客户端):
# -*- coding:utf-8 -*- import socket import urllib import json import sys reload(sys) sys.setdefaultencoding(‘utf-+8‘) RoBot_Key = ‘d4490d8bf55442b4871cfecd84defb68‘ RoBot_Add = ‘http://www.tuling123.com/openapi/api?key=‘ def Communicate(info): url = RoBot_Add+RoBot_Key+‘&info=‘+info response = urllib.urlopen(url).read() data = json.loads(response) return u‘机器人:‘.decode(‘utf-8‘)+data[‘text‘] host = ‘192.168.1.120‘ print host port = 5000 Sk = socket.socket() Sk.bind((host, port)) Sk.listen(1) while True: clnt, addr = Sk.accept() print ‘Address is:‘, addr while True: data = clnt.recv(1024) if not data: clnt, addr = Sk.accept() print ‘Going to:‘, data result = Communicate(data) if len(result) == 0: result = ‘EXD‘ clnt.sendall(result) Sk.close()
客户端:
# -*- uft-8 -*- import socket S = socket.socket() host = ‘192.168.1.120‘ port = 5000 S.connect((host, port)) while True: cmd = raw_input(‘Please enter your cmd:‘) if cmd == ‘‘: continue print ‘Sending Command!‘ S.sendall(cmd) data = S.recv(1024) print data S.close()
三、详细的基本API函数:
socket()函数
bind()函数
listen()、connect()函数
accept()函数
read()、write()等函数
close()函数
Python Socket编程
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。