通信

Python socket 通信功能简介

此生再无相见时 提交于 2020-03-22 15:10:10
常用的地址家族 AF_UNIX:基于文件,实现同一主机不同进程之间的通信 AF_INET:基于网络,适用于IPv4 AF_INET6:基于网络,使用于IPv6 常见的连接类型 SOCK_STREAM:即TCP/IP。面向连接的套接字,通信之前必须建立可靠的连接。面向连接的套接字提供序列化的、可靠的和不重复的数据交付,而没有记录边界。 SOCK_DGRAM:即UDP。面向非连接的套接字,通信之前无需建立连接。在数据传输过程中无法保证数据的有序性、可靠性和重复性。然而数据报确实保存了记录边界,意味着数据是以整体发送的,而非事先切割多个片段。 socket通信 server端 import socket server = socket.socket() # 默认是AF_INET、SOCK_STREAM server.bind(("localhost",6868)) # 将主机号与端口绑定到套接字 server.listen() # 设置并启动TCP监听器 while True: conn,addr = server.accept() # 被动接受TCP连接,一直等待连接到达 while True: data = conn.recv(1024) # 接收TCP消息,并制定最大长度 if not data: print("连接已断开") break conn.send(data.upper(

应用层

落花浮王杯 提交于 2020-03-22 10:54:54
网络应用的体系结构 客户机/服务器结构(Client-Server, C/S) 点对点结构(Peer-to-peer, P2P) 混合结构(Hybrid) 客户机/服务器结构 服务器 永久提供服务 永久性访问地址/域名 大量的服务器实现了可拓展性 客户机 与服务器通信,使用服务器提供的服务 间歇性接入网络 可能使用动态的ip地址 不会与其它客户机通信 P2P结构 没有永远在线的服务器 任意端系统/节点之间可以直接通讯 节点间歇性接入网络 节点可能改变IP地址 优点:高度可伸缩 缺点:难于管理 混合结构 Napster 文件传输使用P2P结构 文件的搜索采用C/S结构——集中式 网络应用进程通信 在计算机网络中, 进程指的就是程序。 同一主机上的进程之间的通信 进程间通信机制 操作系统提供 不同主机上的进程之间的通信 消息交换 套接字(Socket) 进程间通信利用socket发送/接收消息实现,这个过程类似于寄信 寻址进程 不同主机上的进程间通信,那么每个进程必须拥有标识符 寻址主机——ip地址 端口号(Port number):为主机上每个需要通信的进程分配一个端口号( HTTP Server: 80;Mail Server:25) 进程的标志符(ip地址+端口号) 应用层协议 网络应用需遵循应用层协议 公开协议 由RFC(Request For Comments)定义

QT TCP通信收发数据

送分小仙女□ 提交于 2020-03-22 08:02:14
首先在工程文件.pro中加入 QT += network 需要加的头文件 #include <QTcpServer> #include <QTcpSocket> 服务端 1.创建初始化对象 mServer = new QTcpServer(); mSocket = new QTcpSocket(); 2.关联客户端 connect(mServer,SIGNAL(newConnection()),this,SLOT(new_client())); 3.启动监听服务 mServer->listen(QHostAddress::Any,1122); 4.接受数据 mSocket = mServer->nextPendingConnection();//与客户端通信的套接字 connect(mSocket,SIGNAL(readyRead()),this,SLOT(read_client_data())); 5.发送数据 mSocket->write((char*)msg,5); 实现代码 1 tcpServer::tcpServer(QWidget *parent) : 2 QDialog(parent), 3 ui(new Ui::tcpServer) 4 { 5 ui->setupUi(this); 6 mServer = new QTcpServer(); 7 /

TCP通信

♀尐吖头ヾ 提交于 2020-03-22 08:00:49
1、TCP概述 TCP(Transmission Control Protocol):传输控制协议,是一种面向连接的协议。 TCP不同于UDP,TCP严格区分客户端和服务器端,在通信时,必须先由客户端去连接服务器端才能实现通信,服务器端不可以去主动连接客服端,并且服务器端程序需要事先启动,等待客户端的连接。 在jdk中提供了两个类用于实现TCP程序,一个是ServerSocket类,用于表示服务器端,一个Socket类,用于表示客户端。 通信时,首先创建代表服务器端的ServerSocket对象,该对象相当于开启一个服务,并等待客户端的连接,然后创建代表客户端的Socket对象向服务器发送连接请求,服务器端相应请求,两者建立开始通信。 2、ServerSocket ServerSocket类的构造方法: ServerSocket(int port):创建绑定到特定端口的服务器套接字。 常用方法: Socket accept():侦听并接受到此套接字的连接。 InetAddress getInetAddress():返回此服务器套接字的本地地址。 3、Socket Socket类构造方法: Socket(String host, int port):创建一个流套接字并将其连接到指定主机上的指定端口号。 Socket(InetAddress address, int port)

TCP/IP网络层级结构及其应用服务(一)

烂漫一生 提交于 2020-03-22 05:45:45
1.计算机网络体系结构 相互通信的两个计算机系统必须高度协调工作才行,而这种“协调”是相当复杂的。 • “协调”衍生出网络体系结构 • 定义:层次结构和各层协议的集合 计算机网络是采用层次性的结构模型,将网络分为若干层次,每个层次负责不同的功能。 每一个层次中通信双方都要共同遵守相应的约定,我们将这个约定叫做协议。 各功能层之间,上一层向下一层提出服务的要求,下一层则完成上一层提出的要求。 物 理层 为它的上一层提供一个物理连接,以及它们的机械、电气、功能和过程特性 – 机械特性:主要定义物理连接的接插装置的形状和尺寸、引脚数量和排列、固定和锁定装置等等。 – 电气特性 :规定传输二进制位时,线路上信号的电压高低范围、阻抗匹配、传输速率和距离限制。 – 功能特性 :主要定义各条物理线路的功能(如某一电平表示何种意义)。 – 规程特性 :主要定义各条物理线路的工作规程和事件的时序关系 数 据链 路 层 在两个相邻结点间的线路上,无差错的传送以帧为单位的数据帧(FRAME)。 MAC地址: 网 络层 选择合适的网间路由和交换结点,确保数据及时传送 。 IP报文: IP地址A,B,C,D,E五类地址。 子网掩码: 传 输层 根据通信子网的特性最佳的利用网络资源,并以可靠和经济的方式,为两个端系统(也就是源站和目的站)的会话层之间,提供建立、维护和取消传输连接的功能,负责可靠地传输数据。

基本Socket通信流程

亡梦爱人 提交于 2020-03-22 05:00:27
服务器常用模型 1.初始化Socket (用于监听) 1)初始化 SOCKET s ; s = Socket ( ... ) 2)绑定 bind(s, ...); 3)监听 listen(s, ...); 2.建立连接 1)检查状态 int ret = select ( ... ) ; if ( ret > 0 ) { //新连接 } 2)建立新连接 (如果有客户端请求连接) temp = accept ( ... ); // 注意,此时并不使用原来的Socket,而是新建一个Socket (temp)来跟客户端通信 3.收发数据 1)检测读入数据 int ret = select ( ... ) if ( ret > 0 ) { // 有新数据 } 2)接收数据 ret = recv ( ...); 3)检查发送数据 int ret = select ( ... ) ; 4)发送数据 ret = send ( ... ); 客户端常用模型 1.初始化 1)创建Socket s = Socket ( ... ) 2)绑定端口 bind(s , ... ) ; // 客户端的IP地址和端口都不需要固定,可由系统自动分配。因此可以不使用bind绑定端口与协议。 2.建立连接 connect( ... ) 3.收发数据 同服务端 4.关闭连接 来自为知笔记(Wiz) 来源: https:

SNMP协议

∥☆過路亽.° 提交于 2020-03-22 02:51:56
今天被要求在网络中数据的通信用SNMP协议来实现,没办法,只能找点SNMP的资料来学习一下. 以下抄自chinaunix网站. 1.什么是网络管理? 网络管理分为两类。第一类是网络应用程序、用户帐号(例如文件的使用)和存取权限(许可)的管理。它们都是与软件有关的网络管理问题。这里不作讨论。 网络管理的第二类是由构成网络的硬件所组成。这一类包括工作站、服务器、网卡、路由器、网桥和集线器等等。通常情况下这些设备都离你所在的地方很远。正是由于这个原因,如果当设备有问题发生时网络管理员可以自动地被通知的话,那么一切事情都好办。但是你的路由器不会象你的用户那样,当有一个应用程序问题发生时就可以打电话通知你,而当路由器拥挤时它并不能够通知你。 为了解决这个问题,厂商们已经在一些设备中设立了网络管理的功能,这样你就可以远程地询问它们的状态,同样能够让它们在有一种特定类型的事件发生时能够向你发出警告。这些设备通常被称为"智能"设备。 网络管理通常被分为四类: 被管理节点(或设备) 即你想要监视的设备 代理 用来跟踪被管理设备状态的特殊软件或固件 (firmware) 网络管理工作站 与在不同的被管理节点中的代理 通信,并且显示这些代理状态的中心设备。 网络管理协议 被网络管理工作站和大理用来交换 信息的协议。 当设计和构造网络管理的基础结构时,你需要记住下列两条网络管理的原则:

解决移动宽带机顶盒无法登录

痴心易碎 提交于 2020-03-21 23:33:20
3 月,跳不动了?>>> 今年三月份在家为了配置IPv6网络,修改了移动宽带的默认设置。后来我妈发现看不了电视直播,连机顶盒的系统界面都没有进去。 我研究了一下,发现是LAN端口绑定不正确导致的问题。 幸好我之前有截图原来配置,按照原来的端口绑定重新配置就可以了。 下面两张截图可以看到,以48结尾的连接是绑定了网口2,以50结尾的连接是绑定了网口4。 这个要看当时安装光纤时移动小哥怎么配置,所以记得修改配置前备份好。 广东移动宽带路由器HS8545M管理入口用到的账户/密码: CMCCadmin / aDm8H%MdA 来源: oschina 链接: https://my.oschina.net/wffger/blog/3207907

C/C++ 与 Python 的通信

爱⌒轻易说出口 提交于 2020-03-21 07:17:41
作者:Jerry Jho 链接:https://www.zhihu.com/question/23003213/answer/56121859 来源:知乎 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。 C/C++ 调用 Python (基础篇)— 仅讨论Python官方提供的实现方式 Python 调用 C/C++ (基础篇)— 仅讨论Python官方提供的实现方式 C/C++ 调用 Python (高级篇)— 使用 Cython Python 调用 C/C++ (高级篇)— 使用 SWIG 1 C/C++ 调用 Python(基础篇) Python 本身就是一个C库。你所看到的可执行体python只不过是个stub。真正的python实体在动态链接库里实现,在Windows平台上,这个文件位于 %SystemRoot%\System32\python27.dll。 你也可以在自己的程序中调用Python,看起来非常容易: //my_python.c #include <Python.h> int main(int argc, char *argv[]) { Py_SetProgramName(argv[0]); Py_Initialize(); PyRun_SimpleString("print 'Hello Python!'\n"); Py

RS232串口通信详解

只愿长相守 提交于 2020-03-21 05:31:48
RS232串口通信详解:串口是计算机上一种非常通用的通信协议 9芯 信号方向来自 缩写 描述 1 调制解调器 CD 载波检测 2 调制解调器 RXD 接收数据 3 PC TXD 发送数据 4 PC DTR 数据终端准备好 5 GND 信号地 6 调制解调器 DSR 通讯设备准备好 7 PC RTS 请求发送 8 调制解调器 CTS 允许发送 9 调制解调器 RI 响铃指示器 两个串口连接时,接收数据针脚与发送数据针脚相连,彼此交叉,信号地对应相接即可. 串口的电气特性 : 1)RS-232串口通信最远距离是50英尺=15m 2)RS232可做到双向传输,全双工通讯,最高传输速率20kbps 3)RS-232C上传送的数字量采用负逻辑,且与地对称 逻辑1:-3 ~-15V 逻辑0:+3~+15V 所以与单片机连接时常常需要加入电平转换芯片: 串口通信参数 : a)波特率:RS-232-C标准规定的数据传输速率为每秒50、75、 100、150、300、600、1200、2400、4800、9600、19200波特。 b)数据位:标准的值是5、7和8位,如何设置取决于你想传送的信息。比如,标准的ASCII码是0~127(7位);扩展的ASCII码是0~255(8位)。 c)停止位:用于表示单个包的最后一位,典型的值为1,1.5和2位。由于数是在传输线上定时的