前几天看socket本有点晕, 好不容易弄明白了,才发现公司服务器用的是http的. 找了好久也没发现linux下直接用http的api, 不过今日偶然发现了使用socket进行http通信的例子, 试了下,没问题,可以连接到服务器,并下载页面. 有了这一步,下面应该就好走些了,这里发上来,分享一下. #include <stdio.h>#include <stdlib.h>#include <string.h>#include <sys/types.h>#…
TCP只是一个可靠传输的通信管道,上层协议要你自己定的,通俗来说就是发送方和接收方的约定 自定义协议的核心有两个:1. 控制码2. 流程控制 用Socket进行通信,发送的数据包一定是有结构的,类似于:数据头+数据长度+数据内容+校验码+数据尾.这个你定义一个Struct包装起来即可. 控制码是协议的基础信息,主要用来解释数据包的基本信息,通信触发的动作等,以便告知收到数据包之后应该如何处理数据包.例如,你传输文件的时候,一般会经过“传输开始 - 传输中 - 传输结束”三个阶段,那么Sender…
知识点:之前讲的udp协议传输数据是不安全的,不可靠不稳定的,tcp协议传输数据安全可靠,因为它们的通讯机制是不一样的.udp是用户数据报传输,也就是直接丢一个数据包给另外一个程序,就好比寄信给别人,信丢了你也不知道,tcp传输需要先和服务端建立连接,当客户端与服务器连接时,服务器会给出应答,我俩连上了,而且数据传过来还会进行一个数据包数量验证,不一致会重新发送,还有其他种种验证,总之保证了数据传输安全可靠   这一章主要介绍使用套接字,编写一个tcp协议客户端和服务端.同样要用到上一章节提到小…
最近开始研究使用Socket API来网络编程,想着把自己的感想.感悟写下来.我发现在编程之外还有不少概念性的东西要学习.我觉得应该有以下几点吧: 1.得了解下计算机网络的基本概念,如OSI的7层模型,TCP/IP协议,地址端口等.TCP/IP协议相关的知识推荐看国外的教材: 2.了解计算机网络中两个结点之间通信的基本过程,以及IP地址.端口的基本概念.比如应用层的数据如何通过传输层协议包装,再通过IP层协议包装等等: 3.使用Socket API编程的基本流程和技术思路: 在使用Socket…
Socket层上的协议指的数据传输的格式 HTTP协议 传输格式:假设:这是假设,实际http的格式不是这样的. http1.1,content-type:multipart/form-data,content-length:188,body:username=zhangsan&password=123456 XMPP协议,是一款即时通讯协议 可扩展消息处理现场协议是基于可扩展标记语言(XML)的协议,它用于即时消息(IM)以及在线现场探测.这个协议可能最终允许因特网用户向因特网上的其他任何人发…
最近了解了下下socket方面的东西,想做一个socket上传文件的例子. 在网上搜了搜代码执行后,图片数据传输了一半,图片的下半部分是灰色的.然后就自己仿着搜来的代码和php.net 中socket方法的介绍写了一个可以完整上传文件的代码.这里以图片为例. client.php /** * client.php */ define("token", "1k8o3u4h5t6uv8a53uz4210mz"); # 通过appkey 与appsecret动态生成上传凭…
Protobuf序列化的字节流数据是不能自描述的,当我们通过socket把数据发送到Client时,Client必须知道发送的是什么类型的数据,才能正确的反序列化它.这严重影响限制了C/S功能的实现,不解决的话信道事实上只能传输一种类型的数据.本文讲解一下我用的解决办法,虽然我觉得应该有官方的实现更合理,即原生支持Protobuf的自描述. (在金融领域,有一个叫FAST的协议,基本原理和Protobuf相同,并且有更高的压缩率,并且序列化后的字节流是自描述的,可以自动反序列化为对应的模板的数据…
原创文章,版权声明:自由转载-非商用-非衍生-保持署名 | Creative Commons BY-NC-ND 3.0 简介 该篇文章主要回顾--TCP/IP协议族中的TCP/UDP.HTTP:还有Socket.(--该文很干,酝酿了许久!你能耐心看完吗?O_o) 我在这个文章中,列举了常见的TCP/IP族中的协议,今天主角是--传输层协议. 传输层(Transport Layer)是OSI(七层模型)中最重要.最关键的一层,它负责总体的数据传输和数据控制的一层,传输层提供端到端(应用会在网卡注…
转自..smark http://www.cnblogs.com/smark/archive/2012/05/15/2501507.html ActionScript简单实现Socket Tcp应用协议分析器 其实Flash上做通讯很多情况都选择AMF,毕竟他是AS内部基于对象进制序列协议,容量小效率高.但有时为了去调用一些已经有的Tcp服务,而这些服务并不是提供AMF支持:这时你就不得不实现一个协议的分析.其实AS提ByteArray提供了很多write和read方法,这样使我们应用起来非常方…
HTTP协议 HttpWebRequest和 Socket的一点总结 相信接触过网络开发的人对HTTP.HttpWebRequest.Socket这些东西都不陌生吧.它们之间的一些介绍和关系我这里都忽略了.开我们平时开发过程中也是很少有机会接触大什么大并发这个东东,一般大并发我们都需要考虑异步和多线程以及对象池,这个我们以一个简单demo来讲解吧. 主要的调用关系图如下: 类的结构图如下: 一:这里我们依次对这些类做一个简单的说明 HttpRequestInfo: public string U…
JAVA之旅(三十二)--JAVA网络请求,IP地址,TCP/UDP通讯协议概述,Socket,UDP传输,多线程UDP聊天应用 GUI写到一半电脑系统挂了,也就算了,最多GUI还有一个提示框和实例,我们暂时不讲了,我们直接来重点吧,关于JAVA的网络请求是怎么实现的?当然是HTTP协议,但是不可否认,他的概念和思想都是我们必须去涉及的,包括后面的tcp和socket等,好吧,我们开车吧! 一.JAVA网络请求概述 关于JAVA的网络请求,我们大致的可以分为以下几个分类 网络模式 OSI TCP…
我认为当你学完某个知识点后,最好是做一个实实在在的小案例.这样才能更好对知识的运用与掌握 如果你看了我前两篇关于socket通信原理的入门文章.我相信对于做出我这个小案列是完全没有问题的!! 既然是小案列.就难免会有很多不足,所以还请大家见谅.先说下用此案例实现的功能 利用Socke的TCP协议实现了 1:端与端之间的通信(客户端和客户端)包括发送文字,小文件,抖动效果 2:同步实现好友下线与上线的效果,即有其他客户端上线会通知其他已经在线的客户端 3:实现自定义通信协议 服务器窗体布局…
深入浅出--iOS的TCP/IP协议族剖析&&Socket   简介 该篇文章主要回顾--TCP/IP协议族中的TCP/UDP.HTTP:还有Socket.(--该文很干,酝酿了许久!你能耐心看完吗?) 我在这个文章中,列举了常见的TCP/IP族中的协议,今天主角是--传输层协议. 传输层(Transport Layer)是OSI(七层模型)中最重要.最关键的一层,它负责总体的数据传输和数据控制的一层,传输层提供端到端(应用会在网卡注册一个端口号)的交换数据的机制,检查分组编号与次序.传输…
现在我们看看UDP协议(User Datagram Protocol,用户数据报协议).使用UDP,互联网上的机器之间可以互相发送小段的数据,叫做数据报.UDP数据报是不可靠的,这意味着如果客户端发送一系列的UDP数据报到服务器,收到的数据报顺序可能是错误的.不过收到的数据报肯定是正确的.大的数据报会被分为多个小的分片,IP协议负责重新组装这些分片,并最终交付给应用. UDP是无连接的协议,这意味着客户端无需连接服务器即可发送消息.这也意味着程序更加适于大量客户端收发小的消息报文. 在Erlan…
在阅读本文前需要对socket以及自定义协议有一个基本的了解,可以先查看上一篇文章<基于Java Socket的自定义协议,实现Android与服务器的长连接(一)>学习相关的基础知识点. 一.协议定义 上一篇文章中,我们对socket编程和自定义协议做了一个简单的了解,本文将在此基础上加以深入,来实现Android和服务器之间的长连接,现定义协议如下: 数据类协议(Data) 长度(length,32bit) 版本号(version,8bit,前3位预留,后5位用于表示真正的版本号) 数据类…
socket之UDP协议 1.UDP协议 UDP 是User Datagram Protocol的简称, 中文名是用户数据报协议,是OSI(Open System Interconnection 参考模型中一种无连接的传输层协议,提供简单不可靠信息传送服务 是一种无连接的传输层协议,它主要用于不要求分组顺序到达的传输中,分组传输顺序的检查与排序由应用层完成.且不对传送数据包进行可靠性保证,适合于一次传输少量数据. 2.UDP 通讯流程 UDP通讯流程与对讲机非常类似 买传呼机 == socket…
Posted by 微博@Yangsc_o 原创文章,版权声明:自由转载-非商用-非衍生-保持署名 | Creative Commons BY-NC-ND 3.0 #简介 该篇文章主要回顾–TCP/IP协议族中的TCP/UDP.HTTP:还有Socket.***(--该文很干,酝酿了许久!你能耐心看完吗?O_o)*** 我在这个文章中,列举了常见的TCP/IP族中的协议,今天主角是--传输层协议. 传输层(Transport Layer)是OSI(七层模型)中最重要.最关键的一层,它负责总体的数…
来自:https://www.oschina.net/code/snippet_2009881_48232 import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.InputStreamReader; import java.io.OutputStreamWriter; import java.net.ConnectException; import java.net.InetAddress; im…
ZeroMQ 官方地址 :http://api.zeromq.org/4-1:zmq_recv zmq_recv(3)        ØMQ Manual - ØMQ/4.1.0 Name zmq_recv – 从一个socket上接收一个消息帧 Synopsis int zmq_recv (void *socket, void *buf, size_t len, int flags); Description zmq_recv()函数会从socket参数指定的socket上接收一个消息,并把这…
ZeroMQ 官方地址 :http://api.zeromq.org/4-1:zmq-send zmq_send(3)              ØMQ Manual - ØMQ/4.1.0 Name zmq_send – 在一个socket上发送一个消息帧 Synopsis int zmq_send (void *socket, void *buf, size_t len, int flags); Description zmq_send()函数会根据buf参数指定的内存缓冲区和len参数指定…
ZeroMQ 官方地址 :http://api.zeromq.org/4-1:zmq-recvmsg zmq_recvmsg(3)         ØMQ Manual - ØMQ/4.1.0 Name zmq_recvmsg – 从一个socket上接收一个消息帧 Synopsis int zmq_recvmsg (void *socket, zmq_msg_t *msg, int flags); Description 函数zmq_recvmsg()会从socket参数指定的socket中接…
ZeroMQ 官方地址 :http://api.zeromq.org/4-1:zmq-sendmsg zmq_sendmsg(3)        ØMQ Manual - ØMQ/4.1.0 Name zmq_sendmsg – 从一个socket上发送一个消息帧 Synopsis int zmq_sendmsg (void *socket, zmq_msg_t *msg, int flags); Description zmq_sendmsg()函数会把msg参数指定的消息对象添加到socke…
ZeroMQ API 目录 :http://www.cnblogs.com/fengbohello/p/4230135.html ————————————————————————————————————— ZeroMQ 官方地址:http://api.zeromq.org/4-1:zmq-send-const zmq_send_const(3)           ØMQ Manual - ØMQ/4.1.0 Name zmq_send_const – 从一个socket上发送一个固定内存数据…
php 利用socket上传文件 张映 发表于 2010-06-02 分类目录: php 一,利用fsockopen来上传文件 以前我写过一篇关于socket通信原理的博文http://blog.51yip.com/php/673.html有兴趣的朋友可以看看,前面讲的那篇博文,socket的服务器和客户端都是要用php命令来运行的.平常我们上传文件是浏览本地文件,通过一个php程序将文件上传一个地方,这个时候我们用php命令来运行php程序就不方便了.这个时候我们可以用fsockopen来打开…
反射都是操作对象中的__dict__的内容 class Student: def study(self): print("正在学习....") stu = Student() if not hasattr(stu,"name"): setattr(stu,"name","比格") print(stu.name) delattr(stu,"name") # print(stu.name) print(stu.…
ftp server 1) 读取文件名 2)检查文件是否存在 3)打开文件 4)检查文件大小 5)发送文件大小给客户端 6)等客户端确认 7)开始边读边(md5计算)发数据 8)给客户端发md5 ftp下载文件 服务器 # -*- coding:utf-8 -*- __author__ = 'shisanjun' import socket import os import hashlib server=socket.socket() server.bind(("127.0.0.1",…
从Socket上读取对端发过来的数据一般有两种方法: 1)依照字节流读取 BufferedInputStream in = new BufferedInputStream(socket.getInputStream()); int r = -1; List<Byte> l = new LinkedList<Byte>(); while ((r = in.read()) != -1) { l.add(Byte.valueOf((byte) r)); } 2)依照字符流读取 Buffe…
Http,Socket,TCP/IP 协议简述:https://blog.csdn.net/gordohu/article/details/54097841 TCP/IP协议,HTTP协议与webSocket协议区别:https://blog.csdn.net/zr15829039341/article/details/64125868…
Python之路,Day20 = 异常处理.断言.socket之ftp协议 参考博客:http://www.cnblogs.com/metianzing/articles/7148191.html 异常处理 异常分为三个部分 Traceback:异常追踪 ValuError:异常类型 异常的值 格式: try: pass(可能出错的位置) except ValuError: # 异常的类型 pass(输入出现这个异常时候的代码) except KeyError as e1: # 把异常的值赋值给…
TCP服务端.客户端(基础版本) # 这是服务端import socket ​server = socket.socket()  # 买手机server.bind(('127.0.0.1', 8080))  # 插手机卡   bind((IP,PORT))server.listen(5)  # 开机   半连接池​​conn, addr = server.accept()  # 待机等待接电话​​data = conn.recv(1024)  # 接听别人说话 只接收1024个字节 bytesp…