socket tcp/ip 之简单ssh协议

看了python核心编程和大牛的视频之后,自己动手也试了一试,写写笔记,加深一下印象

首先服务端要导入socket模块,然后绑定地址和端口,并监听,然后进入等待接收来自客户端请求的一个循环,如果有数据来连接,则接收数据,整理后把请求的数据发给客户端。

客户端则也是导入socket模块,连接地址和端口,然后是一个发送请求的循环,然后接收来自服务器的信息。

所有的数据的发送与接收都是采用字节类型,而不是字符串,所以要用encode编码。

实现计算机内部命令的接收与发送,如果输入的命令有误,则给出提示。

服务器端:

import socket, os #导入模块

tcp_ser = socket.socket()
tcp_ser.bind((‘localhost‘, 6666))#绑定端口和IP
tcp_ser.listen(5)#监听数目

while True:#大循环,客户端挂掉服务端一直监听状态
    conn, addr = tcp_ser.accept()#等待连接
    print(‘waitting connect...‘, addr)

    while True:#小循环,一个客户端的多个请求
        data = conn.recv(1024)#允许一次接收的数据为1K
        #if not data:#在客户端已经判断,可以不要
        #    conn.send(b‘please input command!‘)
        #    continue

        cmd_data = os.popen(data.decode(‘utf-8‘)).read()#调取读取计算机内部命令
        if not cmd_data:#做个判断,如果读取为空,即没有返回信息,则输入命令有误,则发送特定信息,并重新请求
            conn.send(b‘No command!‘)
            continue
        conn.send(cmd_data.encode(‘utf-8‘))#如果命令正确则发送返回的数据

    #conn.close()
tcp_ser.close()

客户端:

import socket

tcp_client = socket.socket()
tcp_client.connect((‘localhost‘, 6666))#客户端应该与服务器端一致

while True:#客户端的循环
    data = input(‘>>‘)#判断输入是否为空,若为空则不允许发送
    if len(data) == 0:
        print(‘No input message...‘)
        continue
    tcp_client.send(data.encode(‘utf-8‘))#发送请求数据
    cmd_msg = tcp_client.recv(102400)#接收返回数据,一次性接收102k
    print(cmd_msg.decode(‘utf-8‘))#接收和发送都是以字节的形式,所以要编码encode,打印需要解码decode

tcp_client.close()

成功实现:

原文地址:https://www.cnblogs.com/Zhu-Xueming/p/8445815.html

时间: 2024-11-20 16:30:31

socket tcp/ip 之简单ssh协议的相关文章

android 网络编程--socket tcp/ip udp http之间的关系

网络七层由下往上分别为物理层.数据链路层.网络层.传输层.会话层.表示层和应用层,一般编程人员接触最多的就是应用层和运输层,再往下的就是所谓的媒体层了,不是我们研究的对象. 下面是应用层.运输层,网络层.链路层通信协议概图.我们经常接触到的一般是: http协议:应用层协议,并且http协议是基于tcp连接的,主要解决的是如何包装协议的 tcp协议:运输层协议,通常也叫做tcp/ip协议,主要解决数据如何在网络中传输 udp协议:运输层协议,用户数据报协议,不可靠的协议,只负责把应用层的协议的数

08_使用TCP/IP Monitor监视SOAP协议

[SOAP定义] SOAP   简单对象访问协议,基于http传输xml数据,soap协议体是xml格式.SOAP   是一种网络通信协议SOAP   即Simple Object Access Protocol简易对象访问协议SOAP   用于跨平台应用程序之间的通信SOAP   被设计用来通过因特网(http)进行通信SOAP   = HTTP+XML,其实就是通过HTTP发xml数据SOAP   很简单并可扩展支持面向对象SOAP   允许跨越防火墙SOAP   将被作为 W3C 标准来发

TCP/IP的排头兵――地址解析协议(ARP) (转载)

转自:http://blog.csdn.net/wangxg_7520/article/details/2488442 一.引言 古人行军打仗,都要有一个可以引领队伍前进方向的排头兵,在TCP/IP网络大军中,也存在这种排头兵,为TCP/IP传输指明方向,它就是地址解析协议――ARP. 二.ARP协议及应用 地址解析协议(ARP),是TCP/IP协议簇中较底层的一个,它是TCP/IP应用的基础,但又不完全隶属于TCP/IP,所以在名著<TCP/IP详解>中,它被单独的划分出来,与IP一起并列于

wireshark的使用教程--用实践的方式帮助我们理解TCP/IP中的各个协议是如何工作的

 wireshark的使用教程 --用实践的方式帮助我们理解TCP/IP中的各个协议是如何工作的 wireshark是一款抓包软件,比较易用,在平常可以利用它抓包,分析协议或者监控网络,是一个比较好的工具,因为最近在研究这个,所以就写一下教程,方便大家学习. 这里先说Wireshark的启动界面和抓包界面 启动界面: 抓包界面的启动是 按file下的按钮 之后会出现 这个是网卡的显示,因为我有虚拟机所以会显示虚拟网卡,我们现在抓的是真实网卡上的包所以在以太网卡右边点击start 开始抓包 这个就

加域报错:“TCP/IP没有安装网络协议”

检查电脑后发现问题: 1.电脑不能自动获取IP地址 2.手动设置IP地址后加域报错 估计TCP/IP协议损坏,重新安装即可解决:以下为重装TCP/IP协议方法: 1.打开注册表编辑器,删除以下两个键: HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Winsock HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Winsock2 2.用记事本打开%winroot%\inf\nett

计算机网络(二),TCP/IP四层模型常见协议

目录 1.应用层协议 2.传输层协议 3.网络层协议 4.链路层协议 二.TCP/IP四层模型常见协议 1.应用层协议 (1)POP3 (2)FTP (3)HTTP (4)Telnet (5)SMTP (6)NFS (7)DHCP (8)TFTP (9)SNMP (10)DNS 2.传输层协议 (1)TCP 面向连接的.可靠地.基于字节流的传输层通信协议 将应用层的数据流分割成报文段并发送给目标节点的TCP层 数据包都有序号,对方收到则发送ACK确认,未收到则重传 使用校验和来检验数据在传输过程

socket,TCP/IP的理解

TCP/IP 要想理解socket首先得熟悉一下TCP/IP协议族, TCP/IP(Transmission Control Protocol/Internet Protocol)即传输控制协议/网间协议,定义了主机如何连入因特网及数据如何再它们之间传输的标准, 从字面意思来看TCP/IP是TCP和IP协议的合称,但实际上TCP/IP协议是指因特网整个TCP/IP协议族.不同于ISO模型的七个分层,TCP/IP协议参考模型把所有的TCP/IP系列协议归类到四个抽象层中 应用层:TFTP,HTTP

TCP/IP, UDP, ICMP, ARP协议族简介--纯图慎点

ISO/OSI的网络模型架构 TCP/IP参考模型的层次结果 以太网头部结构 以太网属于数据链路层, 属于最基本的协议结构 IP协议 IP协议为TCP, UDP, ICMP提供最基本的数据传输通路 ICMP协议 ICMP协议用于传递差错信息, 时间, 回显, 网络信息等报文数据, ICMP在IP报文中的位置为: 通过ICMP协议, 判断局域网的某台机器是否在线的文章: linux:C语言通过ICMP局域网内部主机是否存活:http://www.cnblogs.com/diligenceday/p

iOS中 HTTP/Socket/TCP/IP通信协议详解 韩俊强的博客

每日更新关注:http://weibo.com/hanjunqiang  新浪微博 简单介绍: // OSI(开放式系统互联), 由ISO(国际化标准组织)制定 // 1. 应用层 // 2. 表示层 // 3. 会话层 // 4. 传输层 // 5. 网络层 // 6. 数据链接层 // 7. 物理层 // TCP/IP, 由美国国防部制定 // 1. 应用层, HTTP, FTP, SMTP, DNS // 2. 传输层, TCP, UDP // 3. 网络层, IP // 4. 链路层,