金沙城娱乐场网址大全 > www041net > 后台接受base64的上传图片www142net:,创建Logo标识

原标题:后台接受base64的上传图片www142net:,创建Logo标识

浏览次数:53 时间:2019-10-04

成立图标标志 Handlers (续)

 

Socket套接字方法

 

易升是微软生产的win10晋升工具。客户可由此易升一键升官win10。

www142net 1

 

 1         #region 配合前端的多张图片上传
 2         #region 上传图片方法
 3         /// <summary>
 4         /// 接口方法
 5         /// </summary>
 6         /// <param name="img">带 data:image/jpeg;base64,的base64的图片</param>
 7         /// <returns>图片路径</returns>
 8         [HttpPost]
 9         public ActionResult GETaddimg2(String img)
10         {
11             if (img == null)
12             {
13                 return Json("空");
14             }
15             else
16             {
17                 return Json(PDUploadImage(img), JsonRequestBehavior.AllowGet);
18             }
19         }
20         #endregion
21         #region 图片转化
22         /// <summary>
23         /// base64 的字符串
24         /// </summary>
25         /// <param name="img"></param>
26         /// <returns>图片转成32的名字</returns>
27         public JsonResult PDUploadImage(string img)
28         {
29             string error = "";
30             return Json(SaveImage("/Upload/Article", img, ref error), JsonRequestBehavior.AllowGet);
31         }
32         #endregion
33         #region 截取data:image/jpeg;base64,提取图片,并保存图片
34         /// <summary>
35         /// 截取data:image/jpeg;base64,提取图片,并保存图片
36         /// </summary>
37         /// <param name="file_name"></param>
38         /// <param name="img_string">base64的字符串</param>
39         /// <param name="error">错误的图片格式</param>
40         /// <returns>路径 + 图片的名称</returns>
41         private string SaveImage(string file_name, string img_string, ref string error)
42         {
43             //try
44             //{
45             string[] img_array = img_string.Split(',');
46             byte[] arr = Convert.FromBase64String(img_array[1]);
47             using (MemoryStream ms = new MemoryStream(arr))
48             {
49                 Bitmap bmp = new Bitmap(ms);
50                 if (img_array[0].ToLower() == "data:image/jpeg;base64")
51                 {
52                     bmp.Save(file_name + ".jpg");
53                     return SetImg(Guid.NewGuid().ToString().Replace('-', 'p').Substring(4), "jpg", arr);
54                 }
55                 else if (img_array[0].ToLower() == "data:image/png;base64")
56                 {
57                     bmp.Save(file_name + ".png");
58                     return SetImg(Guid.NewGuid().ToString().Replace('-', 'p').Substring(4), "png", arr);
59                 }
60                 else if (img_array[0].ToLower() == "data:image/gif;base64")
61                 {
62                     bmp.Save(file_name + ".gif");
63                     return SetImg(Guid.NewGuid().ToString().Replace('-', 'p').Substring(4), "gif", arr);
64                 }
65                 else
66                 {
67                     error = "不支持该文件格式。";
68                     return "错";
69                 }
70             }
71             //}
72             //catch (Exception ex)
73             //{
74             //    error = "生成图片发生错误。" + ex.ToString();
75             //    return "错";
76             //}
77         }
78         #endregion
79         #region 保存图片路径及设置名称
80         /// <summary>
81         /// 保存到文件路径
82         /// </summary>
83         /// <param name="ImgName">保存的文件名称</param>
84         /// <param name="suffix">后缀名</param>
85         /// <param name="arr">base64</param>
86         /// <returns>图片的路径</returns>
87         public string SetImg(string ImgName, string suffix, byte[] arr)
88         {
89             string str3 = System.AppDomain.CurrentDomain.BaseDirectory;//找到相对路径
90             string str4 = System.AppDomain.CurrentDomain.SetupInformation.ApplicationBase;//找到相对路径
91             System.IO.File.WriteAllBytes(str3 + "/Upload/Article/" + ImgName + "." + suffix + "", arr);
92             return "/Upload/Article/" + ImgName + "." + suffix + "";
93         }
94         #endregion
95         #endregion

socket 实例类(8-10分钟)

socket.socket(family=AF_INET, type=SOCK_STREAM, proto=0, fileno=None)

 family***(*socke*t家族)***

  • socket.AF_UNIX:用于本机进度间通信,为了保险程序安全,七个单身的主次(进程)间是无法相互访谈相互的内部存款和储蓄器的,但为了贯彻进程间的报纸发表,能够因此创办三个地点的socket来形成
  • socket.AF_INET:(还有AF_INET6被用来ipv6,还会有点其余的地址家族,可是,他们恐怕是只用于有个别平台,要么正是早已被撤销,或许是少之又少被运用,恐怕是素有未有兑现,全部地点家族中,AF_INET是运用最广大的一个,python帮忙很二种地址家族,不过由于大家只关切互联网编制程序,所以当先51%时候作者么只行使AF_INET)

 socket type***类型***

  • socket.SOCK_STREAM #for tcp
  • socket.SOCK_DGRAM #for udp
  • socket.SOCK_RAW #原始套接字,普通的套接字无法处理ICMP、I卡那霉素P等互联网报文,而SOCK_RAW可以;其次,SOCK_RAW也得以管理特别的IPv4报文;别的,利用原始套接字,能够通过IP_HDENCOREINCL套接字选项由客户构造IP头。
  • socket.SOCK_RDM #是一种有限支撑的UDP方式,即确认保障交到数据报但不有限匡助顺序。SOCK_RAM用来提供对原有公约的中低级访谈,在急需推行某个特殊操作时选择,如发送ICMP报文。SOCK_RAM常常只限于高端客户或管理人运营的主次选择。
  • socket.SOCK_SEQPACKET #废弃了

www041netwww142net,(Only SOCK_STREAM and SOCK_DGRAM appear to be generally useful.)

 proto=0 请忽略,特殊用途

 fileno=None 请忽略,特殊用途

因为自己的计算机早正是win10的系统,所以自身也不须要升高。也不想升官,因为自个儿从网络驾驭到进步后的系统反而未有晋级前的好用。

改成IDE的模式

1、新建贰个ATL Project。

服务端套接字函数(2分钟)

  • s.bind() 绑定(主机,端口号)到套接字
  • s.listen() TCP初叶监听传入连接。backlog钦赐在拒绝连接以前,能够挂起的最明斯克接数量。 backlog等于5,表示内核已经抽出了连年伏乞,但服务器还从未调用accept举行管理的三番五次个数最大为5, 这些值不能够Infiniti大,因为要在基础中维护连接队列
  • s.accept() 被动接受TCP顾客的再而三,(阻塞式)等待连接的到来 
  服务程序调用accept函数从处于监听状态的流套接字s的客户连接请求队列中取出排在最前的一个客户请求,并且创建一个新的套接字来与客户套接字创建连接通道,如果连接成功,就返回新创建的套接字的描述符,以后与客户套接字交换数据的是新创建的套接字;如果失败就返回 INVALID_SOCKET。该函数的第一个参数指定处于监听状态的流套接字;操作系统利用第二个参数来返回新创建的套接字的地址结构;操作系统利用第三个参数来返回新创建的套接字的地址结构的长度。

 

微软的初志是好的,不过那个win10易升太流氓了,直接不通过你的允许强制安装和升高你的体系。并且进级系统连接战败,体验十一分不好。上边详细表达防止win10易升再一次安装到你Computer上。

www142net 2

客商端套接字函数(2分钟)

  • s.connect() 主动开端化TCP服务器连接
  • s.connect_ex() connect()函数的恢宏版本,出错开上下班时间回来出错码,并不是抛出特别

1.业已装过win10易升的首先到调节面板---程序--卸载程序,找出易升卸载掉。

2、建议将 Project Property 中 Linker – General - “Register Output” 设为 no,C/C++ - “Code Generation” - “Runtime Library” 设为 /MTd。

国有用途的套接字函数(3-5分钟)

  • s.recv() 接收数据
  • s.send() 发送数据(send在待发送数据量大于己端缓存区剩余空间时,数据错失,不会发完,可前面通超过实际例解释)
  • s.sendall() 发送完整的TCP数据(本质就是循环调用send,sendall在待发送数据量大于己端缓存区剩余空间时,数据不屏弃,循环调用send直到发完)
  • s.recvfrom() Receive data from the socket. The return value is a pair (bytes, address)
  • s.getpeername() 连接到当前套接字的远端的地点
  • s.close() 关闭套接字
  • socket.setblocking(flag) #True or False,设置socket为非阻塞格局,未来讲io异步时会用
  • socket.getaddrinfo(host, port, family=0, type=0, proto=0, flags=0) 重回远程主机的地址音讯,例子 socket.getaddrinfo('luffycity.com',80)
  • socket.getfqdn() 获得本机的主机名
  • socket.gethostbyname() 通过域名分析ip地址

2.按win+宝马7系张开运营对话框,输入services.msc,踏入劳动页面,找到Windows Update.

www142net 3

tcp套接字

1.简单套接字
客户端和服务端:两个主要功能,1、建立链接 2、数据通讯
服务端程序会产生两个套接字socket,一个用于三次握手建立链接,另一个用于收发消息数据通讯;
客户端产生一个套接字socket,既可以用于建立链接后,再用于收发消息数据通讯。

client.py

www142net 4www142net 5

 1 import socket
 2 
 3 #1.买手机
 4 phone = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
 5 print(phone)
 6 
 7 #2.拨号
 8 phone.connect(('127.0.0.1',8081)) 
 9 #端口范围0-65535,0-1024给操作系统用的,若一直无法连接上server,则会一直停留在这一步
10 
11 #3.发收消息
12 phone.send('hello'.encode('utf-8'))
13 data = phone.recv(1024)
14 print(data)
15 
16 #4.关闭
17 phone.close()

View Code

 后台接受base64的上传图片www142net:,创建Logo标识。service.py

www142net 6www142net 7

 1 import socket
 2 
 3 #1.买手机
 4 phone = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
 5 print(phone)
 6 
 7 #2.绑定手机卡
 8 phone.bind(('127.0.0.1',8081)) #端口范围0-65535,0-1024给操作系统用的
 9 
10 #3.开机
11 phone.listen(5) # 参数表示最大监听数
12 
13 #4.等电话链接
14 print('starting...')
15 conn,client = phone.accept() #返回一个新的套接字conn用于通讯,client为发起通讯链接的客户端的ip和端口号
16 print(conn,client)
17 # print('===>')
18 
19 #5.收,发消息
20 data = conn.recv(1024) # 单位:bytes,  1024代表最大接收1024个bytes
21 print('客户端的数据',data)
22 conn.send(data.upper())
23 
24 #6.挂电话
25 conn.close()
26 
27 #7.关机
28 phone.close()

View Code

www142net 8

www142net 9

 2.增加循环套接字

client.py 

www142net 10www142net 11

 1 import socket
 2 
 3 #1.买手机
 4 phone = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
 5 
 6 print(phone)
 7 
 8 #2.拨号
 9 phone.connect(('127.0.0.1',8080)) #端口范围0-65535,0-1024给操作系统用的
10 
11 while True:
12     msg = input('>>:').strip()
13     if not msg:continue
14     phone.send(msg.encode('utf-8'))  #phone.send(b'')
15     print('has send') #判断能否发空
16     data = phone.recv(1024)
17     print(data.decode('utf-8'))
18 
19 #4.关闭
20 phone.close()

View Code

service.py

www142net 12www142net 13

 1 import socket
 2 
 3 
 4 phone = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
 5 phone.setsockopt(socket.SOL_SOCKET,socket.SO_REUSEADDR,1)
 6 print(phone)
 7 phone.bind(('127.0.0.1',8080)) #端口范围0-65535,0-1024给操作系统用的
 8 phone.listen(5) #最大链接挂起数
 9 
10 print('starting...')
11 conn,client = phone.accept() #监听
12 # print('===>')
13 
14 #监听到到后,进行通讯循环
15 # while True:
16 #     data = conn.recv(1024) # 单位:bytes,  1024代表最大接收1024个bytes
17 #     #conn tcp协议三次握手的成果,双向链接
18 #     if not data:break #适用与linux操作,当client单方面终止链接时,service端会出现死循环
19 #     print('客户端的数据',data)
20 #     conn.send(data.upper())
21 
22 while True:
23     try:
24         data = conn.recv(1024) # 单位:bytes,  1024代表最大接收1024个bytes
25         #conn tcp协议三次握手的成果,双向链接
26 
27         print('客户端的数据',data)
28         conn.send(data.upper())
29     except ConnectionResetError:
30 
31         break
32 
33 conn.close()
34 phone.close()

View Code

if not data:break 是用于linux的判断,因为在linux中当client端单方面终止时,servce端会一直接收到空,会一直循环print('客户端的数据',data),因此需要加上判断;

except ConnectionResetError: 是针对windows的,当client端单方面终止时,server端会报ConnnectionRsetError。

有时重启服务端时会遇到报错:

www142net 14

双击Windows Update,步向这么些页面,运营项目设置为禁止使用。

3、在 Solution Explorer 中右键 Add Class,选择 ATL Simple Object。并在弹出的对话框中为该 Class 命名。

 

出于重启时系统还没赶趟回收端口,因而会提醒端口已被侵占。

以此是由于你的服务端如故存在柒回挥手的time_wait状态在挤占地址(借使不懂,请深切讨论1.tcp三回握手,伍次挥手 2.syn洪流攻击 3.服务器高并发情形下会有大气的time_wait状态的优化措施)

消除措施:参与一条socket配置,重用ip和端口。

phone.setsockopt(SOL_SOCKET,SO_REUSEADDR,1) #就是它,在bind ip和端口 前加。

或者:

实验之前要全部关闭掉所用占用端口的程序,用以下指令
linux:pkill -9 python
windows:taskkill python

 

www142net 15

www142net 16

3.加多 链接循环

前边代码运营可见,client端关闭后,service端也会停业,但那时大家想client端关闭后,service端应该能在收取新的client端的链接乞请,由此,在建

立链接的一部分参与循环。

client.py 

www142net 17www142net 18

 1 import socket
 2 
 3 #1.买手机
 4 phone = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
 5 
 6 print(phone)
 7 
 8 #2.拨号
 9 phone.connect(('127.0.0.1',8080)) #端口范围0-65535,0-1024给操作系统用的
10 
11 while True:
12     msg = input('>>:').strip()
13     if not msg:continue
14     phone.send(msg.encode('utf-8'))  #phone.send(b'')
15     print('has send') #判断能否发空
16     data = phone.recv(1024)
17     print(data.decode('utf-8'))
18 
19 #4.关闭
20 phone.close()

View Code

service.py

www142net 19www142net 20

 1 import socket
 2 
 3 phone = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
 4 phone.setsockopt(socket.SOL_SOCKET,socket.SO_REUSEADDR,1)
 5 print(phone)
 6 phone.bind(('127.0.0.1',8080)) #端口范围0-65535,0-1024给操作系统用的
 7 phone.listen(5) #最大链接挂起数
 8 
 9 print('starting...')
10 
11 while True:
12     '''
13     用于监听多次client端的链接,但一次链接发起结束后,
14     可继续监听下一次client端的连接
15     '''
16     conn,client = phone.accept()
17     print(client)
18     while True:
19         try:
20             data = conn.recv(1024) # 单位:bytes,  1024代表最大接收1024个bytes
21             #conn tcp协议三次握手的成果,双向链接
22             if not data: break
23             print('客户端的数据',data)
24             conn.send(data.upper())
25         except ConnectionResetError:
26             break
27     conn.close()

View Code

3.进入C盘的windows目录下,删除以UpdateAssistant开始的公文夹,如图所示,小编的有多少个。

本文由金沙城娱乐场网址大全发布于www041net,转载请注明出处:后台接受base64的上传图片www142net:,创建Logo标识

关键词:

上一篇:【www041net】Win14遍复账户私下认可半晶莹剔透头像

下一篇:没有了