呆鸟的Python数据分析

Python---Socket远程系统命令

2020-04-17  本文已影响0人  幼姿沫

一 * * socket 五层模型里面应用层传输层里面的一组接口 两端通过通信的时候,两个端点有两个socket  模块 引用模块实现通信

1.应用层HTTP/HTTPS python代码 封装之后                                   

  传输层  TCP/UDP协议端口                      调用socket模块之后                                 

网络层识别的时候用ip地址端口号               元组里面的IP地址和端口号                                   

数据链路层ARP/MAC                                 接收连接和地址

物理层    硬件                                                接收发送信息 并且进行关闭

tcp是传输控制      字节流 面向连接 安全可靠 速度慢 相对于UDP一对一

udp是一种用户数据报 ,发送消息不需要链接,速度快       一对多

二    *     *    TCP代码实现步骤

1.基于TCP实现socket server服务端


1.创建套接字sk=socket.socket()

2.绑定ip地址和端口号 sk.bind(“127.0.0.1”,9000)

3.监听数量listen(3)

4.等待客户端链接 三次握手建立连接 coon,addr=sk.accept()

5.send,recv服务端先发送再接受  再网络端先接受再发送

6.客户端断开连接 四次挥手 断开链接

7.断开套接字  关闭

2.基于TCP的client端


1.创建套接字

2.找到服务端 connect方法 ip 和 端口号连接服务器

3.recv/send

4.断开套接字

三  *   *  UDP的代码实现  没有建立连接

1.基于UDP实现socket server服务端


1.创建套接字sk=socket.socket()

2.绑定bind  ip  和  端口号

3.服务器端先接受信息recvfrom 之后再发送信息sendto

4.最后关闭套接字

2.基于udp 实现 client


1.创建套接字

2.sendto /recvfrom

3.关闭套接字

3.远程套接字字符解码


popen_server代码演示

popen_client代码演示

4.异步 套接字  基于TCP


asy_tcp_server

import socket

from multiprocessingimport Process

def fun(conn):

while True:

conn.send(b"hello")

# 接收发过来的对象

        ret = conn.recv(1024)

print(ret.decode("utf-8"))

# 进行关闭

    conn.close()

if __name__ =='__main__':

#创建套接字 绑定端口号和ip地址

    sk=socket.socket()

sk.bind(("127.0.0.1",9000))

#监听数量 是否有数据连接

    sk.listen(3)

#元组结果 客户端和地址 连接数据 三次握手

    while True:

conn,addr=sk.accept()

#开启子进程进行执行

        p=Process(target=fun,args=(conn,))

#发送信息聊天时循环不间断

        p.start()

sk.close()

asy_tcp_client

import socket

#创建套接字 得到对象链接connect前面的ip地址

sk=socket.socket()

sk.connect(("127.0.0.1",9000))

#开始收发消息循环聊天

while True:

ret=sk.recv(1024)

print(ret)

#二进制bytes 发送消息之后关闭

    s=input(">>>>>")

sk.send(s.encode("utf-8"))

sk.close()

上一篇下一篇

猜你喜欢

热点阅读