一、基本概念

a) 同步:指发送方发出数据后,等收到接收方发回的响应,才发下一个数据包的通信方式。

nb)异步:指的是发送方不等接收方响应,便接着发下个数据包的通信方式。

c) 阻塞:指调用某函数时,直到该函数完成操作,才返回;否则一直阻塞在该调用上。

d) 非阻塞:指调用某操作时,不管操作是否成功都立即返回,而不会挂在该操作上。

二、soeket简介

  Client/Server (客户机/服务器)模型为最常用的模型。在这种方案中客户应用程序向服务器程序请求服务,一个服务器程序通常用一个众所周知的地址监听对服务的请求,也就是说服务器进程一直处于休眠状态,直到一个客户向这个服务器的地址提出了连接请求。在这个时刻,服务程序被"惊醒"并且为客户提供服务,即对客户的请求作出适当的反应。

  Socket 实际在计算机中提供了一个通信端口,可以通过这个端口与任何一个具有 Socket 接口的计算机通信。应用程序在网络上传输,接收的信息都通过这个 Socket 接口来实现。

  Windows Sockets 规范,它不是一种网络协议,而是一套开放的、支持多种协议的 Windows 下的网络编程接口。现在的 Winsock 已经基本上实现了与协议无关,可以使用 Winsock 来调用多种协议的功能,但较常使用的是 TCP/IP 协议。

三 C/S下的socket通信

  C/S模式即我们平时经常提到的 客户端–服务器 模式。

  3.1网络软件的通用体系结构

  客户(Client)和服务器(Server)是指通信中所涉及的两个应用进程。客户端—服务器方式所描述的是进程之间服务和被服务的关系。在下图中,主机A运行客户程序而主机B运行服务器程序。

3.2 最简单的Socket通信流程

  一个只有客户方向服务方发信息的单向通信,并且也只有客户方会主动提出断开连接的最简单的情形(相反过程的原理是一样的),其双方Socket之间的关系如下图所示。

  由上面这个十分简单的过程很容易得出最简单的Socket通信流程,如下图所示。

客户机/服务器模式的建立基于以下两点:

  a)非对等作用

  b)通信完全是异步的。

客户机/服务器模式在操作过程中采取的是主动请示方式:首先服务器方要先启动,并根据请示提供相应服务。

四、网络字节顺序

  不同的计算机存放多字节值的顺序不同,有的机器在起始地址存放低位字节(低位先存),有的机器在起始地址存放高位字节(高位先存)。基于Intel的CPU,即我们常用的PC机采用的是低位先存。为保证数据的正确性,在网络协议中需要指定网络字节顺序,TCP/IP协议使用16位整数和32位整数的高位先存格式。由于不同的计算机存放数据字节的顺序不同,这样发送方发送数据后,即使接收方接受到该数据,也有可能无法查看所接收到的数据。所以在网络中不同主机间进行通信,要统一采用网络字节顺序。

win32 socket 编程(一)——TCP/IP的更多相关文章

  1. 嵌入式linux的网络编程(1)--TCP/IP协议概述

    嵌入式linux的网络编程(1)--TCP/IP协议概述 1.OSI参考模型及TCP/IP参考模型 通信协议用于协调不同网络设备之间的信息交换,它们建立了设备之间互相识别的信息机制.大家一定都听说过著 ...

  2. 计算机网络(十三),Socket编程实现TCP和UDP

    十三.Socket编程实现TCP和UDP 1.TCP (1)TCPServer.java类 package com.interview.javabasic.socket; import com.int ...

  3. 【转载】[基础知识]【网络编程】TCP/IP

    转自http://mc.dfrobot.com.cn/forum.php?mod=viewthread&tid=27043 [基础知识][网络编程]TCP/IP iooops  胖友们楼主我又 ...

  4. win32 socket 编程(三)——TCP/IP

    一.TCP/IP解析 TCP/IP协议的核心部分是传输层协议(TCP.UDP),网络层协议(IP)和物理接口层,这三层通常是在操作系统内核中实现.因此用户一般不涉及.编程时,编程界面有两种形式: 1. ...

  5. win32 socket编程(二)——TCP/IP

    一.大端.小端法定义 1.1小端法(Little-Endian)就是低位字节排放在内存的低地址端即该值的起始地址,高位字节排放在内存的高地址端. (主机字节顺序) 1.2 大端法(Big-Endian ...

  6. Linux系统编程(30)—— socket编程之TCP/IP协议

    在世界上各地,各种各样的电脑运行着各自不同的操作系统为大家服务,这些电脑在表达同一种信息的时候所使用的方法是千差万别.就好像圣经中上帝打乱了各地人的口音,让他们无法合作一样.计算机使用者意识到,计算机 ...

  7. win32 socket编程(五)——客户端实例(TCP)

    一.客户端操作流程 1.1 加载套接字库(WSAStartup()) 1.2创建套接字(socket()). 1.3向服务器发出连接请求(connect()). 对于客户端来说,它不需要绑定,可以直接 ...

  8. day8---多线程socket 编程,tcp粘包处理

    复习下socket 编程的步骤: 服务端:   1 声明socket 实例 server = socket.socket()  #括号里不写  默认地址簇使用AF_INET  即 IPv4       ...

  9. 2015-07学习总结——网络编程(TCP/IP)

    之前学习的主要内容是单机上的处理,比如编程语言.游戏编程.数据库.多媒体编解码.其实对网络也有些接触,比如WWW.HTTP.UDP/TCP.RTP.RTMP.SNMP.FTP.单播组播.Telnet. ...

随机推荐

  1. 【leetcode】Decode Ways

    题目如下: 解题思路:这个题目的本质是一个爬楼梯问题,在爬楼梯问题中,每次可以选择走一步或者两步.而本题也是一样的,解码的时候选择解码一个字符或者两个字符,但是加大了一点点难度,要考虑这些情况.1,Z ...

  2. python-*args、**kargs用法

    可变位置参数: *args:是一个元组,传入的参数会被放进元组里.可变关键字参数: **kwargs:是一个字典,传入的参数以键值对的形式存放到字典里. def test1(*args): print ...

  3. 6.10&&6.12考试反思

    考试结果:6.10AK 6.12:100(评测机)200(本地&&兼容评测机版) OI的考试做题流程无非是: 通读全部题目——>找一个最有把握/最简单的题——>分析思考—— ...

  4. 小程序中css3实现优惠券

    效果如下: css3实现优惠券 知识储备 颜色渐变 linear-gradient() css伪类 :before :after index.wxss .app { /* padding: 20rpx ...

  5. 如何实现echarts组织结构图节点的收缩

    echarts本身没有组织结构图的节点收缩功能,因为项目需求要用到此功能. 引入的echarts必须是2版本的,因为3.0取消了对组织结构图的支持.下载2版本的源码,找到关于onclick事件那部分的 ...

  6. Java网络编程与NIO详解11:Tomcat中的Connector源码分析(NIO)

    本文转载 https://www.javadoop.com 本系列文章将整理到我在GitHub上的<Java面试指南>仓库,更多精彩内容请到我的仓库里查看 https://github.c ...

  7. yum命令查询详解

    一.列举包文件列出资源库中所有可以安装或更新的rpm包# yum list列出资源库中特定的可以安装或更新以及已经安装的rpm包# yum list perl           //列出名为perl ...

  8. win7下面安装flex和bison

    通过Cygwin工具进行安装 下载地址cygwin 安装截图: 搜索flex,选择相应的版本进行安装 搜索bison 然后下一步 安装完成后,将D:\cygwin64\bin路径添加到PATH环境变量 ...

  9. 移动端轮播完整版css3加原生写法

    <!doctype html><html><head> <meta charset="UTF-8"> <meta name=& ...

  10. loj#6487 基础 FFT 练习题

    分析 仔细观察a[i],b[i]的数据范围 于是我们转为枚举所有a[i],b[i]的值 然后暴力即可 代码 #include<bits/stdc++.h> using namespace ...