图⽚传输--通过http协议
常见通信协议
应⽤层:
HTTP(hypertext transfer protocol ):超⽂本传输协议
FTP(File Transfer Protocol):⽂件传输协议
SFTP(SSH File Transfer Protocol):安全⽂件传送协议
DNS(domain name system):域名系统
SMTP(simple mail transfer protocol): 简单邮件传输协议
POP3(post office protocol-version3):  邮局协议3
IMAP(internet mail access portocol): 因特⽹邮件访问协议
SCP(Secure copy,based on SSH)SCP是智能⽹的核⼼部件,⽤来进⾏远程⽂件复制,且复制过程加密,数据传输使⽤SSH
传输层(⽹络层):
TCP(transmission control protocol):传输控制协议
UDP(user Datagram Protocol):⽤户数据报协议
⽹络层:import pickle
IP(Internet Protocol):因特⽹协议
ICMP(Internet Control Message Protocol,主要⽤于路由发送错误报告):控制报⽂协议
链接层:
MAC(media access control):媒体访问控制
ARP(address resolution protocol):地址解析协议
这次使⽤的是http协议来发送请求并传输图⽚得到回应,开始想的是⽤socket(套接字,编程接⼝)传输流实现图⽚的传输。
以下是两者各⾃特点和区别:
Socket:应⽤层与TCP/IP协议族通信的中间软件抽象层,它是⼀组接⼝。在设计模式中,Socket其实就是⼀个门⾯模式,它把复杂的TCP/IP协议族隐藏在Socket接⼝后⾯,对⽤户来说,⼀组简单的接⼝就是全部,让Socket去组织数据,以符合指定的协议。Socket是对TCP/IP协议的封装,通过Socket,我们才能使⽤TCP/UDP协议。
HTTP协议:是建⽴在TCP协议之上的⼀种应⽤。HTTP连接最显著的特点是客户端发送的每次请求都需要服务器回送响应,在请求结束后,会主动释放连接。从建⽴连接到关闭连接的过程称为“⼀次连接”。
1)在HTTP 1.0中,客户端的每次请求都要求建⽴⼀次单独的连接,在处理完本次请求后,就⾃动释放连接。
2)在HTTP 1.1中则可以在⼀次连接中处理多个请求,并且多个请求可以重叠进⾏,不需要等待⼀个请求结束后再发送下⼀个请求。
区别:
1)http是⼀种协议,socket是⼀种编程接⼝,主要包括TCP协议和UDP协议;
2)http和TCP/UDP是两个不同层上的的协议。http是应⽤层的协议,TCP/UDP是传输层的协议,http是
在TCP/UDP之上的协议,http 协议使⽤了TCP/UDP,http更加⾼级⼀点但是没有很好的灵活性。
由于项⽬需求,我选⽤了http协议来实现通信(通过python的pickle包(下⾯有⼀篇写的很详细的关于pickle包的博客,供⼤家查看)将图⽚转换为字节对象发给服务器端,服务器端解析即可),下⾯是客户端实现代码
#!/usr/bin/python
# -*-coding=utf-8 -*-
import json
import urllib
import urllib2
import requests
import pickle
def post(server_url, params):
data = urllib.urlencode(params)
request = urllib2.Request(server_url, data)
return json.loads(urllib2.urlopen(request, timeout=10).read())
def local_image(server_url, image_path):
server_url="192.168.1.176:8080/Face/signIn" #服务器端提供的URL    image_path="li.jpg"
r_file = open(image_path, "rb")
img = pickle.dumps(ad())  #返回字节对象
params = {"img": img}
print post(server_url, params)
if __name__ == "__main__":
url = "192.168.20.129:8080/li.jpg?"
# local image
file_path = "li.jpg"      #本地保存的图⽚路径
local_image(url, file_path)
经测试可以发送请求并得到应答。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。