..........(此处略去万万字)学习中曲折的过程不介绍了,直接说结果

我的学习方法,问自己三个问题,学习过程将围绕这三个问题进行

what:socket是什么

why:为什么要使用socket

how:怎么使用

1. socket是什么

  首先要了解网络通信协议,ISO模型的七个分层,分别为物理层、数据链路层、网络层、传输层、会话层、表示层和应用层(具体每一层的作用,谷歌搜索),理解相关协议,重点理解TCP/IP,UDP协议

  socket的英文原义是“孔”或“插座”。作为BSD UNIX的进程通信机制,取后一种意思。通常也称作"套接字",用于描述IP地址和端口,是一个通信链的句柄。在Internet上的主机一般运行了多个服务软件,同时提供几种服务。每种服务都打开一个Socket,并绑定到一个端口上,不同的端口对应于不同的服务。(摘自百度百科)

  学习资料:简单理解Socket

2. 为什么要使用socket

Socket 传输的特点:

优点

1)  传输数据为字节级,传输数据可自定义,数据量小(对于手机应用讲:费用低)

2) 传输数据时间短,性能高

3) 适合于客户端和服务器端之间信息实时交互

4) 可以加密,数据安全性强

缺点:

1) 需对传输的数据进行解析,转化成应用级的数据

2) 对开发人员的开发水平要求高

3) 相对于Http协议传输,增加了开发量

摘自服务器和客户端的交互方式(Socket,http协议)和各自特点适用范围

3. 怎么使用socket

这里有一个简单的例子

放慢走路的步伐,你可以看到更多路边优美的风景

Socket学习笔记的更多相关文章

  1. socket学习笔记——实现收发文件(Windows)

    记录下来,供自己学习! server.c #define _CRT_SECURE_NO_DEPRECATE #include <stdio.h> #include <stdlib.h ...

  2. C# Socket学习笔记二

    小记:昨天咱们已经了解了Socket的通信原理,可是点对点的一次通信并不是我们想要的,那么今天那我们就继续学习异步通信,简单来说就是服务器端和客户端可以进行多次 互发信息的通信而不用担心通道会关闭.在 ...

  3. C# Socket学习笔记一

    小记:刚接触网络编程觉得网络是个神奇的东西,所以对它就很有兴趣,想了解下网络是如何进行进行数据传输的,那么开始第一天的学习吧!ReadyGo!!! 首先我们要了解一下几点内容: 1.网络中进程之间如何 ...

  4. socket学习笔记——select函数的使用(windows)

    #include <stdio.h> #include <stdlib.h> #include <string.h> #include <winsock2.h ...

  5. socket学习笔记——线程(聊天程序)

    server.c #include <stdio.h> #include <pthread.h> #include <semaphore.h> #include & ...

  6. socket学习笔记——select与epoll函数的使用(linux)

    select.c #include <stdio.h> #include <stdlib.h> #include <string.h> #include <u ...

  7. socket学习笔记——并发服务器与I/O程序分割客户端

    client.c #include <stdio.h> #include <stdlib.h> #include <string.h> #include <u ...

  8. Java Socket 学习笔记

    TCP协议的Socket编程 Socket:英文中的意思是插座.两个Java应用程序可以通过一个双向的网络通信连接实现数据交换,这个双向链路的一端称为一个Socket.Java中所有关于网络编程的类都 ...

  9. Python实战之网络编程socket学习笔记及简单练习

    sk = socket.socket(socket.AF_INET,socket.SOCK_STREAM,0) 参数一:地址簇 socket.AF_INET IPv4(默认) socket.AF_IN ...

随机推荐

  1. Swift中的便利构造器和构造器链

    import UIKit // 1.一个类中至少有一个指定构造器, 其必须负责初始化类中所有的实例存储属性 // 2.便利构造器属于次要的, 辅助性的构造器 // 3.类中可以不定义便利构造器, 便利 ...

  2. C#ArrayList对象集合

    ArrayList alist = new ArrayList(); //集合对像 长度可以改变,类型不限 //添加单个元素可以Add() alist.Add("在在的"); al ...

  3. angular请求传递不了数据

    var data={ 'id':ztreeParent.id } $http({ url:'/rcCategoryControler/deleteRcCategoryById', method:'GE ...

  4. MySql中Blob二进制对象的处理

    BLOB (binary large object),二进制大对象,是一个可以存储二进制文件的容器. 可以用于存储图片等信息 Demo1:存储图片 String sql="INSERT IN ...

  5. C/C++中字符串存储位置

    代码: #include <iostream> #include <cstdio> using namespace std; void fun(char **p){ //cha ...

  6. 更换ios 开发者账号与下载别人的代码 真机调试时注意切换

    Buid Setting search sign

  7. php 之 文件操作(0524)

    php中文件包含两种:文件,文件夹.文件夹又称目录 新建一个文件aa.txt和一个文件夹text,text文件夹下又包含bb.txt 一.判断文件类型filetype("./aa.txt&q ...

  8. HTML&CSS基础学习笔记1.25-input标签隐藏元素

    隐藏元素 有时候我们编写前端代码的时候,可能需要把一些数据告诉后台,但是这些数据又不想让用户看到,我们可以设置<input>标签的[type]属性为"hidden". ...

  9. AngularJS自定义表单验证器

    <!doctype html> <html ng-app="myApp"> <head> <script src="G:\\So ...

  10. Swift—属性观察者-备

    为了监听属性的变化,Swift提供了属性观察者.属性观察者能够监听存储属性的变化,即便变化前后的值相同,它们也能监听到. 属性观察者主要有以下两个: willSet:观察者在修改之前调用. didSe ...