recv

Python网络编程udp

拟墨画扇 提交于 2020-02-17 13:57:34
疫情当下,我在家敲代码!!!! 不出门,不约客,不为祖国增加负担,在家提升自己,就是对自己对国家的最大帮助。 网络通信概述 1.什么是网络 以打电话为例 说明: 网络就是一种辅助双方或者双方能够连接在一起的工具 如果没有网络, 单机 的世界是多么的孤单 没有网络的话,就没有今天的网络游戏,只有单机游戏,我们又怎么和远在他乡的小伙伴一起联机玩呢。 2.使用网络的目的 使用网络就是为了联通多方然后进行通信用的,即把数据从一方传递给另外一方 总结: 使用网络能够把多方链接在一起,然后可以进行数据的传递 所谓的网络编程就是让不同的电脑上的软件能够进行数据传递,即进程之间的通信 ip地址 1.什么是地址 地址就是用来标记地点的 2.ip地址的作用 怎么传过去? to :张三 content:来打农药? ip地址:用来在网络中标记一台电脑,比如192.168.1.1;在本地局域网上是唯一的。 3.ip地址的分类(了解内容) 每一个IP地址包括两部分:网络地址和主机地址 3.1 A类IP地址 一个A类IP地址有1字节的网络地址和3字节的主机地址组成,网络地址最高位必须是“0”,地址范围:1.0.0.1-126.255.255.254 二进制表示为:00000001 00000000 00000000 00000001 - 01111110 11111111 11111111 11111110

解读python中SocketServer源码

你。 提交于 2020-02-15 15:11:07
# 为什么会出现黏包现象? # 首先只有在TCP协议中才会出现黏包现象, # 是因为TCP协议是面向流的协议 # 在发送的数据传输的过程中还有缓存机制来避免数据丢失 # 因此 在连续发送小数据的时候 以及接收大小不符的时候都容易出现黏包现象 # 本质还是因为我们在接收数据的时候不知道发送的数据的长短 # 解决黏包问题 # 在传输大量数据之前先告诉接收端要发送的数据大小 # 如果想更漂亮的解决问题,可以通过struct模块来定制协议 1,解决方案一   问题的根源在于,接收端不知道发送端将要传送的字节流的长度,所以解决粘包的方法就是围绕,如何让发送端在发送数据前,把自己将要发送的字节流总大小让接收端知晓,然后接收端来一个死循环接收完所有数据。 #_*_coding:utf-8_*_ import socket,subprocess ip_port=('127.0.0.1',8080) s=socket.socket(socket.AF_INET,socket.SOCK_STREAM) s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) s.bind(ip_port) s.listen(5) while True: conn,addr=s.accept() print('客户端',addr) while True: msg

PHP中on回调的实现(十六节)

三世轮回 提交于 2020-02-13 12:54:39
  各位好,我是老李。和老李一同完成《PHP网络编程》,虽然我知道实际上从头到尾可能只有我一个人在搞。我告诉你们一定要好好在家好好学习、远程工作,不要折腾地自己最后连班都没法上了,要好好学习、要不断学习、要终身学习。   上个章节我送了大家一篇番外:   同步异步阻塞非阻塞,了解一下?(十三节)   今天这篇是和上篇番外紧密结合的,因为我答应大家了,要通过今天这一篇中的代码表演一波儿啥叫阻塞、啥叫非阻塞、啥叫异步非阻塞...这年月,听到的异步非阻塞次数太TM多了,似乎每个高IO的程序都离不开这个组合词!   这个词语,席卷八荒,说出去拉风又嚣张   所以呢,今天我们搞一个非常有意思的科研方向,那就是Workerman里的那种on是咋实现的。作为一个24k的泥腿子,php-fpm才是星光大道,复制粘贴是拿手兵器,composer install是撒手锏,CURD一把梭,PHP里的一大坨函数几乎都是[ 同步阻塞 ],复制粘贴起来毫无后顾之忧,上来就是干,最后在在业务里随手搞两个sleep( one ),以后优化响应速度就是这么轻松简单,So easy!哪里不会点哪里~   但是用Workerman或者Nodejs,on是一定避免不了的,天生丽质的[ 异步非阻塞 ]注定会让程序写法变成这样。因为调用方(研究僧)自己不会主动获取数据,靠的是被调用方(阿梅)的通知,所以调用方(研究僧

RT-Thread--线程间通信

不羁的心 提交于 2020-02-13 00:21:57
线程中通信 在裸机编程中,经常会使用全局变量进行功能间的通信,如某些功能可能由于一些操作而改变全局变量的值,另一个功能对此全局变量进行读取,根据读取到的全局变量值执行相应的动作,达到通信协作的目的; 邮箱 邮箱服务是实时操作系统中一种典型的线程间通信方法。举一个简单的例子,有两个线程,线程 1 检测按键状态并发送,线程 2 读取按键状态并根据按键的状态相应地改变 LED 的亮灭。这里就可以使用邮箱的方式进行通信,线程 1 将按键的状态作为邮件发送到邮箱,线程 2 在邮箱中读取邮件获得按键状态并对 LED 执行亮灭操作。 邮箱的工作机制 RT-Thread 操作系统的邮箱用于线程间通信,特点是开销比较低,效率较高; 邮箱中的每一封邮件只能容纳固定的 4 字节内容(针对 32 位处理系统,指针的大小即为 4 个字节,所以一封邮件恰好能够容纳一个指针)。典型的邮箱也称作交换消息,如下图所示,线程或中断服务例程把一封 4 字节长度的邮件发送到邮箱中,而一个或多个线程可以从邮箱中接收这些邮件并进行处理。 非阻塞方式的邮件发送过程能够安全的应用于中断服务中,是线程、中断服务、定时器向线程发送消息的有效手段。 通常来说,邮件收取过程可能是阻塞的,这取决于邮箱中是否有邮件,以及收取邮件时设置的超时时间。当邮箱中不存在邮件且超时时间不为 0 时,邮件收取过程将变成阻塞方式。在这类情况下

socketserver

ぐ巨炮叔叔 提交于 2020-02-12 20:28:09
socketserver SocketServer内部使用 IO多路复用 以及 “多线程” 和 “多进程” ,从而实现并发处理多个客户端请求的Socket服务端。即:每个客户端请求连接到服务器时,Socket服务端都会在服务器是创建一个“线程”或者“进程” 专门负责处理当前客户端的所有请求。 特点: socketserver自带多线程、多进程 socketserver中的两个类,可以解决两个问题: server类:保证一直运行提供服务(连接循环) request类:可以基于一个连接进行通信循环 一 简单示例 二 简单示例二 三 模拟上传、下载功能 1 客户端上传到服务端 2 服务端下载到客户端 一 简单示例 客户端输入,服务端返回大写 ps:基于TCP的socketserver,实现了并发 server: import socketserver class MyFTP(socketserver.BaseRequestHandler): def handle(self): while True: data = self.request.recv(1024) self.request.send(data.upper()) if __name__ == '__main__': obj = socketserver.ThreadingTCPServer(('127.0.0.1', 8484

发送邮件

ぃ、小莉子 提交于 2020-02-12 12:03:29
效果图 main.cpp 1 #include <iostream> 2 #include "SendMail.h" 3 #include <string> 4 using namespace std; 5 6 int main() 7 { 8 char EmailContents[255]="From: \"名字\"<xxxxxxx@163.com>\r\nTo:"; 9 char EmailTo[50]; 10 char subject[50]; 11 char content[50]; 12 printf("要发送的邮箱账号:"); 13 scanf("%s",EmailTo); 14 printf("你的标题:"); 15 scanf("%s",subject); 16 printf("你的内容:"); 17 scanf("%s",content); 18 19 strcat(EmailContents,EmailTo); 20 strcat(EmailContents,"\n"); 21 strcat(EmailContents, "subject:"); 22 strcat(EmailContents, subject); 23 strcat(EmailContents, "\r\n\r\n"); 24 strcat(EmailContents, content);

使用 Python 进行 socket 编程

点点圈 提交于 2020-02-12 08:15:01
本文主要参考 https://docs.python.org/3/howto/sockets.html 。 本文只讨论 STREAME(比如 TCP) INET(比如 IPv4) socket。 在多种 跨进程通信 方式中,sockets 是最受欢迎的。对于任意给定的平台,有可能存在其他更快的跨进程通信方式,但对于跨平台交流,sockets 应该是唯一的一种。 创建 Socket 客户端 Socket 通俗的讲,当你点击一个链接,你的浏览器会做以下事情: # create an INET, STREAMing socket s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) # 连接到服务器,如果 URL 中没有指明端口,那么端口为默认的 80 s.connect(("www.python.org", 80)) 建立连接后,可以用 socket s 来发送请求。然后 s 会读取回复,然后被销毁。在一次请求-接收过程(或者一系列连续的小的过程)中,客户端 sockets 通常只会被使用一次。 服务端 Socket 对于 web 服务器来说: # create an INET, STREAMing socket serversocket = socket.socket(socket.AF_INET, socket.SOCK

如何理解php socket

孤街浪徒 提交于 2020-02-08 15:08:39
  什么是socket?   Socket 是在应用层和传输层之间的一个抽象层,它把 TCP/IP 层复杂的操作抽象为几个简单的接口,供应用层调用实现进程在网络中的通信。Socket 起源于 UNIX,在 UNIX 一切皆文件的思想下,进程间通信就被冠名为文件描述符(file descriptor),Socket 是一种“打开—读/写—关闭”模式的实现,服务器和客户端各自维护一个“文件”,在建立连接打开后,可以向文件写入内容供对方读取或者读取对方内容,通讯结束时关闭文件。   如图为Socket所在位置:   Socket 通信过程   Socket 保证了不同计算机之间的通信,也就是网络通信。对于网站,通信模型是服务器与客户端之间的通信。两端都建立了一个 Socket 对象,然后通过 Socket 对象对数据进行传输。通常服务器处于一个无限循环,等待客户端的连接。   相关学习视频教程分享:php视频教程   下图是面向连接的 TCP 时序图:   客户端过程:   客户端的过程比较简单,创建 Socket,连接服务器,将 Socket 与远程主机连接(注意:只有 TCP 才有“连接”的概念,一些 Socket 比如 UDP、ICMP 和 ARP 没有“连接”的概念),发送数据,读取响应数据,直到数据交换完毕,关闭连接,结束 TCP 对话。   这里也可用 send() 方法

When does socket.recv() raise an exception?

大憨熊 提交于 2020-02-05 07:00:08
问题 I'm using blocking sockets and I'm quite confused about recv() because I didn't find any decent documentation about it. The official one seems restricted to me. The other thing that is confusing me is that people on the internet(and also on this site) says that it doesn't raise any exception for blocking sockets, but it simply keeps waiting. If I brutally close the server it throws an Errno 10054(socket.error) instead. 回答1: To put it simply, recv will throw an exception whenever the

sipp basic call 脚本

回眸只為那壹抹淺笑 提交于 2020-02-05 06:37:50
1 <?xml version="1.0" encoding="ISO-8859-1" ?> 2 <!DOCTYPE scenario SYSTEM "sipp.dtd"> 3 4 <!-- This program is free software; you can redistribute it and/or --> 5 <!-- modify it under the terms of the GNU General Public License as --> 6 <!-- published by the Free Software Foundation; either version 2 of the--> 7 <!-- License, or (at your option) any later version. --> 8 <!-- --> 9 <!-- This program is distributed in the hope that it will be useful, --> 10 <!-- but WITHOUT ANY WARRANTY; without even the implied warranty of --> 11 <!-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See