socket

Python之路【第六篇】:socket

末鹿安然 提交于 2020-03-25 03:11:51
目的:实现两台机器之间的通信。也就是说一个作为服务端(时刻监听接收数据),另一个作为客户端(发送数据)。 Python实现的过程个人理解: 1.服务端开始监听。 2.客户端发起连接请求。 3.服务端收到连接请求信息。 3.客户端发送数据。 4.服务端收到客户端的数据,并返回给客户端自定义的数据。 5.客户端收到被返回的数据。 重复3-5………… 6.客户端或者服务端关闭这次通信。 socket百度百科:https://baike.baidu.com/item/socket/281150。socket是python的默认模块。 socket_1serve.py 如下: # -*- coding: utf-8 -*- """ Created on Wed Jul 18 16:42:50 2018 @author: lihc """ #============================================================================== # 1. TCP server端代码 # #!/usr/bin/env python # # # # -*- coding:utf-8 -*- # # #==========================================================================

Py西游攻关之Socket网络编程

十年热恋 提交于 2020-03-25 03:11:13
新闻 管理 Py西游攻关之Socket网络编程 知识预览 计算机网络 回到顶部 网络通信要素 : A:IP地址 (1) 用来标识网络上一台独立的主机 (2) IP地址 = 网络地址 + 主机地址(网络号:用于识别主机所在的网络/网段。主机号:用于识别该网络中的主机) (3) 特殊的IP地址: 127.0.0.1 (本地回环地址、保留地址,点分十进制) 可用于简单的测试网卡是否故障。表示本机。 B:端口号: (1) 用于标识进程的逻辑地址。不同的进程都有不同的端口标识。 (2) 端口: 要将数据发送到对方指定的应用程序上,为了标识这些应用程序,所以给这些网络应用程序都用数字进行标识。为了方便称呼这些数字,则将这些数字称为端口。(此端口是一个逻辑端口) C: 传输协议 : 通讯的规则。例如:TCP、UDP协议(好比两个人得用同一种语言进行交流) ①、UDP:User Datagram Protocol用户数据报协议 特点: 面向无连接:传输数据之前源端和目的端不需要建立连接。 每个数据报的大小都限制在64K(8个字节)以内。 面向报文的不可靠协议。(即:发送出去的数据不一定会接收得到) 传输速率快,效率高。 现实生活实例:邮局寄件、实时在线聊天、视频会议…等。 ②、TCP:Transmission Control Protocol传输控制协议 特点: 面向连接:传输数据之前需要建立连接

常用模块介绍

孤街醉人 提交于 2020-03-25 03:10:27
subprocess模块 它是可以远程操作主机,模拟shell命令 'dir'是windows上查看任务的命令 import subprocess obj = subprocess.Popen('dir', shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE) #Popen是模拟cmd命令,'dir'是windows上查看任务的命令,shell=True是指可以用shell命令了, 输出和错误,放到管道(PIPE)里 # print(obj.stdout.read().decode('gbk')) #打印输出的内容 # print(obj.stderr.read().decode('gbk')) #打印错误的内容 res = obj.stdout.read() + obj.stderr.read() #错误和输入放到一起给变量res print(res.decode('gbk')) #打印res 在linux里可以创建python脚本,写入 import subprocess obj = subprocess.Popen('ls;lsblk', shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE) #Popen是模拟cmd命令,'dir

[转][C#]常用开源项目

两盒软妹~` 提交于 2020-03-24 23:52:07
[转][C#]常用开源项目 本文来自: http://www.cnblogs.com/sunxuchu/p/6047589.html Json.NET http://www.newtonsoft.com/json https://github.com/JamesNK/Newtonsoft.Json Json .NET 是一个读写Json效率比较高的.Net框架.Json .Net 使得在.Net环境下使用Json更加简单。通过Linq To JSON可以快速的读写Json,通过JsonSerializer可以序列化你的.Net对象。让你轻松实现.Net中所有类型(对象,基本数据类型等)和Json的转换。 Math.NET http://www.mathdotnet.com/ https://github.com/mathnet Math.NET的目标是为提供一款自身包含清晰框架的符号运算和数学运算/科学运算,它是C#开发的开源类库。Math.NET含了一个支持线性代数的解析器,分析复杂微分,解方程等等功能。 Faker.Net https://github.com/jonwingfield/Faker.Net 开发的时候是不是为测试数据烦恼?Faker.Net可以非常方便帮你生成大批量测试数据。例如人员表里面的姓名、性别什么的。 Html Agility Pack http:/

c++ zeromq azmq用法

丶灬走出姿态 提交于 2020-03-24 17:27:51
3 月,跳不动了?>>> 概述 zeromq是一个非常简单使用的socket库,但是其使用方法又不同于通常意义上的socket,也和那些mq级的库也不同,这里主要以azmq为类来说明zeromq的使用方式。使用zeromq的时候理解其使用方式是最为重要的,这样才能融会贯通到自己的项目中去。本文主要讲述zeromq常用的使用方式。 REQ-REP socket通信有个很原始的用法就是客户端请求,服务端回复,这个模式就是应对这种使用方式来而来的,客户端请求,服务端回复,双方严格遵守这个规则,zeromq通过一个状态机来维护这个状态,任何一方不遵守这个约定都会导致混乱。 服务端: #include <azmq/socket.hpp> #include <boost/asio.hpp> #include <array> #include <glog/logging.h> #include <boost/make_shared.hpp> #include <boost/bind.hpp> #include <azmq/actor.hpp> namespace asio = boost ::asio; /** * rep req 模式的服务端 * @param argc * @param argv * @return */ int main( int argc, char **argv) {

I/O 多路复用之select、poll、epoll详解

风流意气都作罢 提交于 2020-03-24 11:13:34
  select,poll,epoll都是IO多路复用的机制。I/O多路复用就是 通过一种机制,一个进程可以监视多个描述符,一旦某个描述符就绪(一般是读就绪或者写就绪),能够通知程序进行相应的读写操作。 但select,poll,epoll本质上都是同步I/O,因为他们都需要在读写事件就绪后自己负责进行读写,也就是说这个读写过程是阻塞的,而异步I/O则无需自己负责进行读写,异步I/O的实现会负责把数据从内核拷贝到用户空间。 1.select   select 函数监视的文件描述符分3类,分别是writefds、readfds、和exceptfds。调用后select函数会阻塞,直到有描述副就绪(有数据 可读、可写、或者有except),或者超时(timeout指定等待时间,如果立即返回设为null即可),函数返回。当select函数返回后,可以 通过遍历fdset,来找到就绪的描述符。    select目前几乎在所有的平台上支持,其良好跨平台支持也是它的一个优点 。select的一 个缺点在于单个进程能够监视的文件描述符的数量存在最大限制,在Linux上一般为1024,可以通过修改宏定义甚至重新编译内核的方式提升这一限制,但是这样也会造成效率的降低。   select有3个缺点:     每次调用select,都需要把fd集合从用户态拷贝到内核态,这个开销在fd很多时会很大。  

Web程序运行原理

谁都会走 提交于 2020-03-24 08:03:27
3 月,跳不动了?>>> 这篇文章 用一个简单的示例回味一下Web程序的运行原理。 在开始Web框架设计之前,有必要先讲一讲Web软件的运行原理。 Web软件和一般软件最大不同,就是Web软件是运行在一台服务器上,大家通过浏览器访问服务器来工作学习。而一般软件则是运行在用户手中的计算机设备里。 从部署角度来讲,Web软件是一处部署服务各方。而一般软件则需要一台一台的去安装部署。 照此分析,如今流行的App其实说白了也算是一般软件喽?其实从运行本质上来看是这样的。不同的是App运行在端上,这个端一般指的是Pad、手机或者智能设备。 现如今一些智能路由器也支持App了,搞不好那天我们的插座上也能跑两个App。但是无论如何一对一的部署方式和Web一次部署服务各方这种方式。是有着本质的区别的,好了言归正传回到我们的话题上来。 一个简单的Web应用程序 所谓Web开发其实就是编写一个程序运行在一台机器上,然后通过浏览器访问这个应用。下面就展示一个非常简单的Web应用程序: import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.io.PrintWriter; import java.io.Reader; import java.net

python一句话启动http服务

这一生的挚爱 提交于 2020-03-24 02:33:13
有时候局域网共享个东西不方便,尤其在服务器上的时候,总不能先下载下来,再上传上去吧,于是经常在这台机器用python起个http服务,然后去另一台机器直接访问,一来二去,妥试不爽,特进行一下分离 python3 python -m http.server 80 Serving HTTP on 0.0.0.0 port 80 (http://0.0.0.0:80/) ... python2 python -m SimpleHTTPServer 80 Serving HTTP on 0.0.0.0 port 80 ... 如果是本机访问的话,可以直接在浏览器输入: http://0.0.0.0 那么问题来了,如果是想让其它机器访问怎么办?还要想办法得到自己ip python -c "import socket;print([(s.connect(('8.8.8.8', 53)), s.getsockname()[0], s.close()) for s in [socket.socket(socket.AF_INET, socket.SOCK_DGRAM)]][0][1])" 192.168.2.10 所以两句合并的python3版才是我常用的 sudo python -m http.server 80 --bind `python -c "import socket;print([

Java 网络编程的一些概念

你。 提交于 2020-03-23 20:42:01
网络编程:实现连接到网络的计算机之间的网络通信,比如QQ的聊天、传文件。 ip:一台计算机在网络中的唯一标识 查看本机ip:windows是ipconfig,linux是ifconfig ipv4:4个整数,0-255之间,点号分隔,比如192.168.1.1,约42亿个地址,2011年初已耗尽 ipv6:8组,每组4个16进制数,冒号分隔,比如ABCD:0000:2C4F:0000:0000:EF01:2345:6789 如果一组全是0,可缺省,上面的地址可简写为ABCD :: 2C4F:0000:0000:EF01:2345:6789,但只能缺省一次(只能出现一次::) 也可以简写为ABCD:0000:2C4F :: EF01:2345:6789,缺省了2组0 本地回路地址:127.0.0.1(ipv4) ::1(ipv6) 广播地址:255.255.255.255 端口号:唯一标识一台机器上的某个程序。ip确定是哪台机器,port确定是这台机器上的哪个程序。 范围:0-65535,尽量使用1024以上的端口号,1024以下的基本都被OS用了。 协议: TCP 面向连接(3次握手),数据安全(需要对方存在、且已启动才能进行通信),因为要保证传输安全,所以传输速度略慢,要区分客户端、服务端。 UDP 无连接,数据不安全(直接发送数据,不管对方是否存在、是否已启动),速度快

python学习Day33--SocketServer

我与影子孤独终老i 提交于 2020-03-23 17:22:03
一、回顾(需要记住的) 1、架构:   C/S架构:充分发挥PC机性能   B/S架构:统一了应用的接口,隶属于C/S架构 2、物理地址:mac,全球唯一,类似于一个身份证 3、IP地址:四位点分十进制 4、arp协议:通过目标的IP地址,获取目标mac地址 5、OSI五层模型:   应用层 http, https, ftp, py文件   传输层 tcp/udp协议   网络层 ip协议   数据链路层 arp协议   物理层 传输电信号 6、交换机的通信方式:   单播:点对点   组播:点对多(一组,不是指所有)   广播:向多个PC端发送数据包 7、交换机的功能:   组成局域网,经过内部处理解析数据,将数据以点对点,点对多的方式发送给目标 8、路由器的功能:   跨网段的数据传输,路由出网络传输的最佳路径。 9、TCP协议:面向连接的,面向字节流传输,可靠   UDP协议:无连接,面向数据包,不可靠,传输速度快 10、TCP与UDP协议的区别:   TCP有三次握手,四次挥手   (1)三次握手:第一次的请求一定是客服端先发起     客服端向服务器发送一个连接请求;     客服端回复一个确认接收到请求,并要求连接客服端;     客服端回复服务器一个确认连接的消息,   (2)四次挥手:谁先发起都可以     客服端先发送一个断开连接的请求;