网络编程杂项2

import socket #模块导入import subprocesssk = socket.socket() #创建套接字sk.bind((‘127.0.0.1‘,8000)) #绑定ip 端口sk.listen(5)

while True: #循环接受用户请求    conn,addr = sk.accept() #接受用户信息和ip地址    while True:        try:            cmd = str(conn.recv(1024),‘utf-8‘) #把用户信息接受utf-8            if cmd:  #判断是否为空                print(‘>>>:‘,cmd) #服务端打印命令                obj = subprocess.Popen(cmd,shell=True,stdout=subprocess.PIPE,stderr=subprocess.PIPE)                #调用Popen类相当于终端把,cmd命令,shell=True设置异常,最好为真,stdout或stderr标准正确输出和错误输出                if not obj.wait():#等待子进程返回0 或 不正常                    cmd_result = obj.stdout.read()                    #正常情况下接受执行结果                else:                    print(‘错误:‘)#否则错误                    cmd_result = obj.stderr.read()                    #接受错误信息                    print(str(cmd_result,‘gbk‘))                    #在服务器端打印错误信息                result_len = bytes(str(len(cmd_result)),‘utf-8‘)                #获取结果的长度                conn.send(result_len)#结果的长度发送给客户端                conn.recv(1024) #防止黏包,一根面条剪一下,是不是就不会黏在一起了                conn.sendall(cmd_result)#把执行结果发送给客户端            else:                conn.close() #客户端退出,则关闭这个连接,退出循环等待下个连接                break

except ConnectionRefusedError as e: #防止客户异常退出,打印异常退出循环,监听下个            print(e)            break
import socket #模块sk = socket.socket() #套接字sk.connect((‘127.0.0.1‘,8000)) #ip地址 端口while True:  #循环发送消息    cmd = input(‘>>>:‘).strip() #命令,.strip()去除换行空格    if cmd == ‘exit‘:  #exit退出连接        sk.close()        break    sk.send(bytes(cmd,‘utf-8‘))#命令以utf-8字符格式并以二进制格式发送过去    result_len = int(str(sk.recv(1024),‘utf-8‘))    #接受服务器发送结果的长度    sk.send(bytes(‘ok‘,‘utf-8‘))    #防止数据粘连    print(result_len)    date = bytes() #二进制格式来接受执行结果    while len(date) != result_len: #循环接受结果        date += sk.recv(1024)    print(str(date,‘gbk‘)) #打印结果

原文地址:https://www.cnblogs.com/lc1013/p/10231094.html

时间: 2024-10-15 12:38:22

网络编程杂项2的相关文章

网络编程杂项高级

tcp聊天,#server端实现:import socketsk=socket.socket() # 实例化socket对象address=("0.0.0.0",8000) #设置端口sk.bind(address) # 绑定IP地址和端口sk.listen(5) #监听while True: conn,addr=sk.accept()#conn接受数据,addr获取客户端ip地址 while True: # 这个循环来实现相互之间聊天的逻辑 try: #win被中断连接就会异常 li

C#网络编程技术FastSocket实战项目演练

一.FastSocket课程介绍 .NET框架虽然微软提供了socket通信的类库,但是还有很多事情要自己处理,比如TCP协议需要处理分包.组包.粘包.维护连接列表等,UDP协议需要处理丢包.乱序,而且对于多连接并发,还要自己处理多线程等等.本期分享课程阿笨给大家带来的是来源于github开源Socket通信中间件:FastSocket,目的就是把大家从繁琐的网络编程技术中彻底地解放和释放出来. 阿笨只想安安静静的学习下网络编程技术Socket后,将学习的成果直接灵活的运用到自己的实际项目中去.

网络编程 -- RPC实现原理 -- RPC -- 迭代版本V1 -- 本地方法调用

网络编程 -- RPC实现原理 -- 目录 啦啦啦 V2--RPC -- 本地方法调用:不通过网络 入门 1. RPCObjectProxy rpcObjectProxy = new RPCObjectProxy(new LocalRPCClient()); : 绑定目标对象 2. IUserService userService = (IUserService) rpcObjectProxy.create(IUserService.class); :返回代理类 3. List<User> u

C#网络程序设计(1)网络编程常识与C#常用特性

    网络程序设计能够帮我们了解联网应用的底层通信原理!     (1)网络编程常识: 1)什么是网络编程 只有主要实现进程(线程)相互通信和基本的网络应用原理性(协议)功能的程序,才能算是真正的网络编程. 2)网络编程的层次 现实中的互联网是按照"TCP/IP分层协议栈"的体系结构构建的,因此程序员必须搞清楚自己要做的是哪个层次上的编程工作. TCP/IP协议体系的实现情况: 其中,网络接口层已经被大多数计算机生产厂家集成在了主板上,也就是经常所说的网卡(NIC).windows操

9. 网络编程:

网络编程: 端口: 物理端口: 逻辑端口:用于标识进程的逻辑地址,不同进程的标识:有效端口:0~65535,其中0~1024系统使用或保留端口. java 中ip对象:InetAddress. import java.net.*; class  IPDemo{ public static void main(String[] args) throws UnknownHostException{ //通过名称(ip字符串or主机名)来获取一个ip对象. InetAddress ip = InetA

物联网网络编程、Web编程综述

本文是基于嵌入式物联网研发工程师的视觉对网络编程和web编程进行阐述.对于专注J2EE后端服务开发的童鞋们来说,这篇文章可能稍显简单.但是网络编程和web编程对于绝大部分嵌入式物联网工程师来说是一块真空领域. 的确,物联网研发应该以团队协作分工的方式进行,所以有嵌入式设备端.网关.web前端.APP.后端开发等专属岗位.作为系统架构师,自然需要掌握各种岗位的关键技术.作为嵌入式工程师,掌握网络编程.web编程,能够极大地拓展自己的视野和架构思维,能够主动地对系统的各种协议和应用场景提出优化的见解

linux网络编程-(socket套接字编程UDP传输)

今天我们来介绍一下在linux网络环境下使用socket套接字实现两个进程下文件的上传,下载,和退出操作! 在socket套接字编程中,我们当然可以基于TCP的传输协议来进行传输,但是在文件的传输中,如果我们使用TCP传输,会造成传输速度较慢的情况,所以我们在进行文件传输的过程中,最好要使用UDP传输. 在其中,我们需要写两个程序,一个客户端,一个服务端,在一个终端中,先运行服务端,在运行客户端,在服务端和客户端都输入IP地址和端口号,注意服务端和客户端的端口号要相同,然后选择功能,在linux

UNIX网络编程卷1 回射客户程序 TCP客户程序设计范式

本文为senlie原创,转载请保留此地址:http://blog.csdn.net/zhengsenlie 下面我会介绍同一个使用 TCP 协议的客户端程序的几个不同版本,分别是停等版本.select 加阻塞式 I/O 版本. 非阻塞式 I/O 版本.fork 版本.线程化版本.它们都由同一个 main 函数调用来实现同一个功能,即回射程序客户端. 它从标准输入读入一行文本,写到服务器上,读取服务器对该行的回射,并把回射行写到标准输出上. 其中,非阻塞式 I/O 版本是所有版本中执行速度最快的,

黑马程序员——网络编程篇

------- android培训.java培训.期待与您交流! ---------- 概述   1.网络模型        (1).OSI参考模型        (2).TCP/IP参考模型   2.网络通讯要素         (1).IP地址        (2).端口号         (3).传输协议    3.过程        1,找到对方IP. 2,数据要发送到对方指定的应用程序上.为了标识这些应用程序,所以给这些网络应用程序都用数字进行标识. 为了方便称呼这个数据,叫做端口(逻