socket

使用Nginx部署Django

﹥>﹥吖頭↗ 提交于 2020-03-04 00:46:54
参考文章链接 我的环境 conda 4.7.10、python 3.6.7、Django 3.0.3 安装uWSGI pip install uwsgi 这里如果出现了问题,可以考虑如下解决办法: 参考链接 apt-get install python3-dev apt-get install gcc-4.7 ##卸载你的gcc版本,安装为4.7: rm /usr/bin/gcc ln -s /usr/bin/gcc-4.7 /usr/bin/gcc 最后重新运行安装命令 pip install uwsgi 测试uWSGI是否正常工作 新建一个test.py文件: touch test.py 若之后要删除则运行 rm 文件名 输入如下内容: def application(env, start_response): start_response('200 OK', [('Content-Type','text/html')]) return [b"Hello World"] # python3 #return ["Hello World"] # python2 运行uWSGI: uwsgi --http :8080 --wsgi-file test.py 可能会报错: uwsgi: error while loading shared libraries: libpcre.so.1

Udp广播,线程发送与接收数据

一曲冷凌霜 提交于 2020-03-03 21:06:53
''' Udp广播,线程发送和接收数据。 广播的核心是bind和setsockopt ''' #! python3 # encoding: utf-8 import socket import threading import time def upd_send(udpSocket): ip = '<broadcast>' port = 51213 room = 1 subnet = 2 device = 3 i = 0 #字符串设置为16进制使用bytes().fromhex()。 设置带参数为16进制,并且参数位宽为2,不够用0填充,使用%02x,(跟c sprintf()参数一样格式) while True: if (i % 2 == 0): data = bytes().fromhex('a7a800000018000000%02x%02x000300c010d06b'%(subnet,device)) else: data = bytes().fromhex('a7a8000000180000%02x%02x%02x000300c010d06b'%(room,subnet,device)) #data = str(data,encoding = 'utf-8') udpSocket.sendto(data,(ip,port)) time.sleep(5) i+=1

socket选项设置

这一生的挚爱 提交于 2020-03-03 20:18:05
#include <sys/socket.h> int setsockopt( int socket, int level, int option_name, const void *option_value, size_t option_len); 第一个参数socket是套接字描述符。第二个参数level是被设置的选项的级别,如果想要在套接字级别上设置选项,就必须把level设置为 SOL_SOCKET。 option_name指定准备设置的选项,option_name可以有哪些取值,这取决于level,以linux 2.6内核为例(在不同的平台上,这种关系可能会有不同): SO_DEBUG,打开或关闭调试信息, 当option_value非0时,打开调试信息,否则,关闭调试信息。 SO_REUSEADDR,打开或关闭地址复用功能,当option_value非0时,打开,否则,关闭。 SO_DONTROUTE,打开或关闭路由查找功能,当option_value非0时,打开,否则,关闭。 SO_BROADCAST,允许或禁止发送广播数据,当option_value非0时,允许,否则,禁止。 SO_SNDBUF,设置发送缓冲区的大小。发送缓冲区的大小是有上下限的,其上限为256 * (sizeof(struct sk_buff) + 256),下限为2048字节。 SO

JavaSE基础加强之网络编程(七)

你。 提交于 2020-03-03 16:26:08
概述 (一)网络通信概述 (二)TCP协议 (三)综合案例:文件上传 (一)网络通信概述 demo01: 软件结构 C/S结构 :全称为Client/Server结构,是指客户端和服务器结构。常见程序有QQ、迅雷等软件。 B/S结构 :全称为Browser/Server结构,是指浏览器和服务器结构。常见浏览器有谷歌、火狐等。 demo02: 网络通信协议: TCP/IP TCP/IP协议: 传输控制协议/因特网互联协议( Transmission Control Protocol/Internet Protocol),是Internet最基本、最广泛的协议。它定义了计算机如何连入因特网,以及数据如何在它们之间传输的标准。它的内部包含一系列的用于处理数据通信的协议,并采用了4层的分层模型,每一层都呼叫它的下一层所提供的协议来完成自己的需求。 上图中,TCP/IP协议中的四层分别是应用层、传输层、网络层和链路层,每层分别负责不同的通信功能。 链路层 :链路层是用于定义物理传输通道,通常是对某些网络连接设备的驱动协议,例如针对光纤、网线提供的驱动。 网络层 :网络层是整个TCP/IP协议的核心,它主要用于将传输的数据进行分组,将分组数据发送到目标计算机或者网络。 运输层 :主要使网络程序进行通信,在进行网络通信时,可以采用TCP协议,也可以采用UDP协议。 应用层

Flask的socket.error:10053

僤鯓⒐⒋嵵緔 提交于 2020-03-03 14:03:04
一脸懵逼 : 学习python一段时间,最近使用flask搭建了一个服务器,然后使用phantom(相当于浏览器)发送请求发送了几条flask就挂掉了,报错信息如下: 由于个人python经验不是很足,看到这个错误一脸懵逼。根据以往的经验,首先偶想到的是截图保存这个错误,这样以后遇到了就不会再次懵逼了。 二脸懵逼: 有问题找度娘。百度不行找google,结果折腾了一个下午,也没找到解决办法,不过也好找到了一些有用的信息. Windows Sockets Error Codes :https://msdn.microsoft.com/en-us/library/windows/desktop/ms740668(v=vs.85).aspx 翻译下:软件导致连接中断。一个已经建立的链接被你主机上的软件中断,可能是由于数据传输超时或者端口错误 看到这个消息,直接反应是这什么鬼。研究了半天也不懂,二脸懵逼啊。 三脸懵逼: 接着百度吧,路漫漫其修远兮, 找到一帖子,http://www.oschina.net/question/726618_2189576 看到这个答案仿佛瞬间就有一束阳光照耀到了我身上,摩拳擦掌,试试试。然后装个库都各种坑,不是装不上就是装上了不能用。百度百度才知道这些是适合unix系统的,无奈我用的是windos,三脸懵逼。 峰回路转: 接着来的剧情只能用峰回路转来形容了

初体验开发一个HttpServer雏形

匆匆过客 提交于 2020-03-03 08:43:37
记得迷上 Python 的那段时间,同时也关注了 IronPython 一段时间,IronPython项目的源代码中就包含了一个简单的HttpServer,因为一直都对Web服务器的运行机制很感兴趣,因此研究了一下源代码并跟踪调试,也让我这服务器开发的门外汉体验了一把。 熟话说,看归看,写归写,写程序远比看懂代码有难度多了,于是乎堆码热情澎湃,堆了一个HttpServer雏形(实现原理的模型) 一、阻塞模型 阻塞模型,当您的程序运行到某条代码时(请求I/O操作),当前进程将等待在调用处,后面的语句将不继续执行,直到引起阻塞的语句执行完毕后,等待出后面的语句将可继续执行,从这里我们可以知道,阻塞模型严重浪费计算机的资源,然而非阻塞将是该方案的替代者。我们先看看阻塞模型的实现代码: 首先,我们开启一个接受来自客户端请求的Socket并与IP地址和端口绑定,然后监听该Socket。 public static void OpenServer() { server = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); server.Bind(new IPEndPoint(IPAddress.Parse("127.0.0.1"), 8000)); server.Listen(0); }

Python学习第九天

拟墨画扇 提交于 2020-03-03 08:29:20
生产者-消费者模型: 看下面的例子哦: 1 import threading,queue 2 import time 3 def consumer(n): 4 while True: 5 print("\033[32;1mconsumer [%s]\033[0m get task: %s"%(n,q.get())) 6 time.sleep(1) 7 q.task_done() 8 def producer(n): 9 count=1 10 while True: 11 print('producer [%s] produced a new task: %s'%(n,count)) 12 q.put(count) 13 count += 1 14 q.join()#queue is emtpy 15 print('all tasks has been cosumed by consumers...') 16 q=queue.Queue() 17 c1=threading.Thread(target=consumer,args=[1,]) 18 c2=threading.Thread(target=consumer,args=[2,]) 19 c3=threading.Thread(target=consumer,args=[3,]) 20 21 p=threading.Thread

Winsock API TCP/IP网络通信

爱⌒轻易说出口 提交于 2020-03-03 07:25:02
通信流程如下: 1、Winsock库的装入、初始化 #pragma comment(lib,"WS2_32.lib")、WSAStartup() 2、套接字的创建(服务器端是监听套接字) socket() 3、绑定套接字到指定的IP地址和端口 bind() 4、设置套接字进入监听状态(服务器端)+接受连接请求(服务器端) listen()、accept() 5、请求与服务器连接 connect() 6、收发数据 send()、recv() 7、关闭套接字,释放Winsock库 closesocket()、WSACleanup() 详细流程如下: 服务器端代码: // TCPServer.cpp : 定义控制台应用程序的入口点。 // #include "stdafx.h" #include <WinSock2.h> #include <stdio.h> #pragma comment(lib,"WS2_32.lib") //包含相应库文件 int main() { WSADATA wsaData;//结构体。(DLL库)建议版本/支持的最高版本/描述字符串/系统状态字符串/同时支持最大套接字数量 WORD sockVersion = MAKEWORD(2, 0);//windows socket api 版本 ::WSAStartup(sockVersion, &wsaData);

Socket编程基础

…衆ロ難τιáo~ 提交于 2020-03-03 06:59:41
参考资料: Socket编程的原理 ① ② ③ Socket编程的实例 ① ② Socket位于TCP/IP协议中的应用层与网络层之间,如下图: 大体流程如下图: using System.Net using System.Net.Sockets 服务器端 创建流式(SocketType.Stream)套接字-----Socket() Socket socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); addressFamily参数指定Socket使用的寻址方案,socketType参数指定Socket的类型,protocolType参数指定Socket使用的协议 使Socket与一个本地终结点(IPEndPoint)相联-----Bind() IPAddress ip = IPAddress.Any; 会自动运算本机IP地址并返回一个IPAddress实例,还可以IPAddress ip=IPAddress.Parse(ip地址的字符串) IPEndPoint iep=new IPEndPoint(ip,端口); 参数是一个IPAddress实例和整型的端口,返回一个本地终结点 socket.Bind(iep);

Socket网络编程学习笔记

牧云@^-^@ 提交于 2020-03-03 05:57:29
1 服务器 发送消息和接受消息的代码 namespace Socket_编程_tcp协议_服务端 { class Program { static void Main(string[] args) { //1.创建服务端socket类 Socket tcpServer = new Socket(AddressFamily.InterNetwork,SocketType.Stream,ProtocolType.Tcp); //2.绑定IP和端口号 192.168.155.1 IPAddress ipaddress = new IPAddress(new byte[]{192,168,155,1}); EndPoint point = new IPEndPoint(ipaddress,7788); //ipendpoint是对ip+端口号做了一次封装的类 tcpServer.Bind(point); //这是向操作系统申请一个可用的ip跟端口号 用来做通信 //3.开始监听等待客户端做连接 tcpServer.Listen(100); //参数是最大连接数 Console.WriteLine("开始监听"); Socket clientSocket = tcpServer.Accept(); //暂停当前线程,直到有一个客户端连接过来,之后进行下面的代码 /