套接字的简单程序

模拟ssh的远程操控:

服务端:

import socket
import subprocess

phone = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
phone.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
phone.bind((‘127.0.0.1‘, 8081))
phone.listen(5)

print(‘starting----------------‘)
while 1:
    conn,cilent_addr = phone.accept()
    print(conn, cilent_addr)

    while 1:
        try:
            ret = conn.recv(1024)
            if not ret:break
            res = subprocess.Popen(ret.decode(‘utf_8‘), shell=True,
                                   stdout=subprocess.PIPE,
                                   stderr=subprocess.PIPE)
            stdout = res.stdout.read()
            stderr = res.stderr.read()
            conn.send(stdout + stderr)
        except Exception:break
    conn.close()
phone.close()

客户端:

import socket
phone = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
phone.connect((‘127.0.0.1‘, 8081))

while 1:
    cmd = input(‘>>>: ‘).strip()
    if not cmd: continue
    phone.send(cmd.encode(‘utf_8‘))
    cet = phone.recv(1024)
    print(cet.decode(‘gbk‘))

phone.close()
时间: 2024-10-11 00:38:06

套接字的简单程序的相关文章

UDP—Socket,套接字聊天简单的聊天程序。

思路:(发送端) 1.既然需要聊天.就应该怎么建立聊天程序,,DatagramSocket对象http://www.w3cschool.cc/manual/jdk1.6/ DatagramSocket dgSocket = new DatagramSocket(); 2.那么发给谁?怎么打包数据.DatagramPacket. 代码如下DatagramPacket对象API文档链接http://www.w3cschool.cc/manual/jdk1.6/ 具体查看集体代码: //创建数据包 b

基于JAVA套接字的简单网络聊天程序

网络中进程之间如何通信 本地的进程间通信(IPC)有很多种方式,但可以总结为下面4类: 消息传递(管道.FIFO.消息队列) 同步(互斥量.条件变量.读写锁.文件和写记录锁.信号量) 共享内存(匿名的和具名的) 远程过程调用(Solaris门和Sun RPC) 但这些都不是本文的主题!我们要讨论的是网络中进程之间如何通信?首要解决的问题是如何唯一标识一个进程,否则通信无从谈起!在本地可以通过进程PID来唯一标识一个进程,但是在网络中这是行不通的.其实TCP/IP协议族已经帮我们解决了这个问题,网

VBox虚拟机与主机(宿主)通讯原理以及socat(套接字猫)简单介绍

前言 尝试虚拟机使用socat建立服务器端接口转发时,发现对虚拟机接入网络原理不是非常了解,于是乎上网查找资料想搞明白是怎么回事,于是乎有了这篇总结博文.socat可以在服务器端口间建立全双工通信通道,可以用于端口数据转发,据说是Linux/Unix系统三大神器之一. 虚拟机虚拟网卡连接模式 1.桥接模式 直接将虚拟网卡桥接在物理网卡上,虚拟机与主机地位对等,相当于局域网新增加了一台机器,虚拟机分配的IP是局域网真实的IP地址,主机与虚拟机以及局域网其它主机与虚拟机可以互相访问 2.仅主机(ho

Linux进程间通信 -- 数据报套接字 socket()、bind()、sendto()、recvfrom()、close()

前一篇文章,Linux进程间通信——使用流套接字介绍了一些有关socket(套接字)的一些基本内容,并讲解了流套接字的使用,这篇文章将会给大家讲讲,数据报套接字的使用. 一.简单回顾——什么是数据报套接字 socket,即套接字是一种通信机制,凭借这种机制,客户/服务器(即要进行通信的进程)系统的开发工作既可以在本地单机上进行,也可以跨网络进行.也就是说它可以让不在同一台计算机但通过网络连接计算机上的进程进行通信.也因为这样,套接字明确地将客户端和服务器区分开来. 相对于流套接字,数据报套接字的

《JAVA套接字》

套接字(socket)为两台计算机之间的通信提供了一种机制,在 James Gosling 注意到 Java 语言之前,套接字就早已赫赫有名.为了能够方便开发网络应用程序,Unix系统推出了一种应用程序访问通信协议的操作系统调用——Socket套接字,使得程序员很方便的访问TCP/IP协议,从而开发各种网络应用程序.后来Windows也引入Socket,Java语言也引入了套接字的编程模型. 多数程序员,不管他们是否使用 Java 语言进行编码,都不想很多知道关于不同计算机上的应用程序彼此间如何

套接字编程--TCP

一.socket编程 socket本身有"插座"的意思,因此用来描述网络连接的一对一关系."在TCP/IP协议中,"TP地址+TCP或端口号"唯一标识网络通讯中的一个进程,"IP地址+端口号"就称为socket.(socket就像当于文件一样,客户端通过往里面写数据,服务器端就从里面读取数据,socket 就是用来做载体的).为TCP/TP协议设计的应用层编程接口称为socketAPI. 二.网络字节序 内存中的多字节数据相对于内存地址

IPC——数据报套接字通信

Linux进程间通信——使用数据报套接字 前一篇文章,Linux进程间通信——使用流套接字介绍了一些有关socket(套接字)的一些基本内容,并讲解了流套接字的使用,这篇文章将会给大家讲讲,数据报套接字的使用. 一.简单回顾——什么是数据报套接字 socket,即套接字是一种通信机制,凭借这种机制,客户/服务器(即要进行通信的进程)系统的开发工作既可以在本地单机上进行,也可以跨网络进行.也就是说它可以让不在同一台计算机但通过网络连接计算机上的进程进行通信.也因为这样,套接字明确地将客户端和服务器

socket 套接字编程

目录 SOCKET 一.基于TCP协议的socket套接字编程 1.1 什么是socket 1.2 套接字分类 1.3 套接字工作流程 二.基于udp协议的套接字编程 三.UDP协议和TCP协议的区别 3.1 udp协议的特点 3.2 UDP和TCP的区别 SOCKET 一.基于TCP协议的socket套接字编程 1.1 什么是socket ? socket是应用层和传输层之间的一个抽象层,我们经常把socket称为套接字,它是一组接口,把TCP/IP层的复杂操作抽象为几个简单的接口供应用层调用

sockt套接字编程

一.Socket简介 Socket是进程通讯的一种方式,即调用这个网络库的一些API函数实现分布在不同主机的相关进程之间的数据交换. 几个定义: (1)IP地址:即依照TCP/IP协议分配给本地主机的网络地址,两个进程要通讯,任一进程首先要知道通讯对方的位置,即对方的IP. (2)端口号:用来辨别本地通讯进程,一个本地的进程在通讯时均会占用一个端口号,不同的进程端口号不同,因此在通讯前必须要分配一个没有被访问的端口号. (3)连接:指两个进程间的通讯链路. (4)半相关:网络中用一个三元组可以在