码迷,mamicode.com
首页 > 编程语言 > 详细

Python Socket编程

时间:2017-08-06 23:02:52      阅读:224      评论:0      收藏:0      [点我收藏+]

标签:data   size   jpg   技术   获取   img   images   服务器端   logs   

因需要做一个监测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 = 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 = 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编程

标签:data   size   jpg   技术   获取   img   images   服务器端   logs   

原文地址:http://www.cnblogs.com/uestc-mm/p/7296083.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!