linux的tcp/udp网络编程模型

网络通信(Socket/TCP/UDP) TCP/IP传输协议,即传输控制/网络协议,也叫作网络通讯协议。它是在网络的使用中的最基本的通信协议。TCP/IP传输协议对互联网中各部分进行通信的标准和方法进行了规定。并且,TCP/IP传输协议是保证网络数据信息及时、完整传输的两个重要的协议。TCP/IP传输协议是严格来说是一个四层的体系结构,应用层、传输层、网络层和数据链路层都包含其中。[2]TCP/IP协议是Internet最基本的协议,其中应用层的主要协议有TelnetFTPSMTP。 阅读详情
一、概述
TCP(传输控制协议)和UDP(用户数据报协议是网络体系结构TCP/IP模型中传输层一层中的两个不同的通信协议。
TCP:传输控制协议,一种面向连接的协议,给用户进程提供可靠的全双工的字节流,TCP套接口是字节流套接口(stream socket)的一种。
UDP:用户数据报协议。UDP是一种无连接协议。UDP套接口是数据报套接口(datagram socket)的一种。
二、TCP和UDP介绍
1)基本TCP客户—服务器程序设计基本框架

说明:(三路握手)
        1.客户端发送一个SYN段(同步序号)指明客户打算连接的服务器端口,以及初始化序号(ISN) 。
        2.服务器发回包含服务器的初始序号的SYN报文段作为应答。同时,将确认序号(ACK)设置为客户的ISN加1以对客户的SYN 报文段进行确认。一个SYN将占用一个序号。
        3.客户必须将确认序号设置为服务器的ISN加1以对服务器的SYN报文段进行确认。

2) 基本UDP客户—服务器程序设计基本框架流程图

 
3) UDP和TCP的对比:
从上面的流程图比较我们可以很明显的看出UDP没有三次握手过程。
简单点说。UDP处理的细节比TCP少。UDP不能保证消息被传送到(它也报告消息没有传送到)目的地。UDP也不保证数据包的传送顺序。UDP把数据发出去后只能希望它能够抵达目的地。
TCP优缺点:
优点:
        1.TCP提供以认可的方式显式地创建和终止连接。
        2.TCP保证可靠的、顺序的(数据包以发送的顺序接收)以及不会重复的数据传输。
        3.TCP处理流控制。
        4.允许数据优先
        5.如果数据没有传送到,则TCP套接口返回一个出错状态条件。
        6.TCP通过保持连续并将数据块分成更小的分片来处理大数据块。—无需程序员知道
缺点: TCP在转移数据时必须创建(并保持)一个连接。这个连接给通信进程增加了开销,让它比UDP速度要慢。
UDP优缺点:
        1.UDP不要求保持一个连接
        2.UDP没有因接收方认可收到数据包(或者当数据包没有正确抵达而自动重传)而带来的开销。
        3.设计UDP的目的是用于短应用和控制消息
        4.在一个数据包连接一个数据包的基础上,UDP要求的网络带宽比TDP更小。
三、Socket编程
Socket接口是TCP/IP网络的API,Socket接口定义了许多函数或例程,程序员可以用它们来开发TCP/IP网络上的应用程序。要学Internet上的TCP/IP网络编程,必须理解Socket接口。
Socket接口设计者最先是将接口放在Unix操作系统里面的。如果了解Unix系统的输入和输出的话,就很容易了解Socket了。网络的Socket数据传输是一种特殊的I/O,Socket也是一种文件描述符。Socket也具有一个类似于打开文件的函数调用Socket(),该函数返回一个整型的Socket描述符,随后的连接建立、数据传输等操作都是通过该Socket实现的。常用的Socket类型有两种:流式Socket(SOCK_STREAM)和数据报式Socket(SOCK_DGRAM)。流式是一种面向连接的Socket,针对于面向连接的TCP服务应用;数据报式Socket是一种无连接的Socket,对应于无连接的UDP服务应用。
1、socket调用库函数主要有:
创建套接字 
        Socket(af,type,protocol)
建立地址和套接字的联系 
        bind(sockid, local addr, addrlen)
服务器端侦听客户端的请求 
        listen( Sockid ,quenlen)
建立服务器/客户端的连接 (面向连接TCP) 
        客户端请求连接 
        Connect(sockid, destaddr, addrlen) 
        服务器端等待从编号为Sockid的Socket上接收客户连接请求 
        newsockid=accept(Sockid,Clientaddr, paddrlen)
发送/接收数据 
        面向连接:send(sockid, buff, bufflen) 
        recv( ) 
        面向无连接:sendto(sockid,buff,…,addrlen) 
        recvfrom( )
释放套接字 
        close(sockid)
2、TCP/IP应用编程接口(API)
服务器的工作流程:首先调用socket函数创建一个Socket,然后调用bind函数将其与本机地址以及一个本地端口号绑定,然后调用listen在相应的socket上监听,当accpet接收到一个连接服务请求时,将生成一个新的socket。服务器显示该客户机的IP地址,并通过新的socket向客户端发送字符串" hi,I am server!"。最后关闭该socket。
 

main()
{ 
    int sock_fd,client_fd; /*sock_fd:监听socket;client_fd:数据传输socket */ 
    struct sockaddr_in ser_addr; /* 本机地址信息 */ 
    struct sockaddr_in cli_addr; /* 客户端地址信息 */ 
    char msg[MAX_MSG_SIZE];/* 缓冲区*/
    ser_sockfd=socket(AF_INET,SOCK_STREAM,0);/*创建连接的SOCKET */
    if(ser_sockfd<0)
    {/*创建失败 */
        fprintf(stderr,"socker Error:%s\n",strerror(errno));
        exit(1);
    } 
    /* 初始化服务器地址*/
    addrlen=sizeof(struct sockaddr_in);
    bzero(&ser_addr,addrlen);
    ser_addr.sin_family=AF_INET;
    ser_addr.sin_addr.s_addr=htonl(INADDR_ANY);
    ser_addr.sin_port=htons(SERVER_PORT);
    if(bind(ser_sockfd,(struct sockaddr*)&ser_addr,sizeof(struct sockaddr_in))<0)
    { /*绑定失败 */
        fprintf(stderr,"Bind Error:%s\n",strerror(errno));
        exit(1);
    } 
    /*侦听客户端请求*/
    if(listen(ser_sockfd,BACKLOG)<0)
    {
        fprintf(stderr,"Listen Error:%s\n",strerror(errno));
        close(ser_sockfd);
        exit(1);
    }
    while(1)
    {/* 等待接收客户连接请求*/
        cli_sockfd=accept(ser_sockfd,(struct sockaddr*) & cli_addr,&addrlen);
        if(cli_sockfd<=0)
        {
            fprintf(stderr,"Accept Error:%s\n",strerror(errno));
        }
        else
        {/*开始服务*/
            recv(cli_addr,msg,MAX_MSG_SIZE,0); /* 接受数据*/
            printf("received a connection from %sn", inet_ntoa(cli_addr.sin_addr));
            printf("%s\n",msg);/*在屏幕上打印出来 */ 
            strcpy(msg,"hi,I am server!");
            send(cli_addr,msg,sizeof(msg),0); /*发送的数据*/
            close(cli_addr); 
        }
    }
    close(ser_sockfd);
}


客户端的工作流程:首先调用socket函数创建一个Socket,然后调用bind函数将其与本机地址以及一个本地端口号绑定,请求连接服务器,通过新的socket向客户端发送字符串" hi,I am client!"。最后关闭该socket。
 

main()
{
    int cli_sockfd;/*客户端SOCKET */
    int addrlen;
    char seraddr[14];
    struct sockaddr_in ser_addr,/* 服务器的地址*/
        cli_addr;/* 客户端的地址*/
    char msg[MAX_MSG_SIZE];/* 缓冲区*/
    GetServerAddr(seraddr);
    cli_sockfd=socket(AF_INET,SOCK_STREAM,0);/*创建连接的SOCKET */
    if(ser_sockfd<0)
    {/*创建失败 */
        fprintf(stderr,"socker Error:%s\n",strerror(errno));
        exit(1);
    }
    /* 初始化客户端地址*/
    addrlen=sizeof(struct sockaddr_in);
    bzero(&ser_addr,addrlen);
    cli_addr.sin_family=AF_INET;
    cli_addr.sin_addr.s_addr=htonl(INADDR_ANY);
    cli_addr.sin_port=0;
    if(bind(cli_sockfd,(struct sockaddr*)&cli_addr,addrlen)<0)
    { 
        /*棒定失败 */
        fprintf(stderr,"Bind Error:%s\n",strerror(errno));
        exit(1);
    }
    /* 初始化服务器地址*/
    addrlen=sizeof(struct sockaddr_in);
    bzero(&ser_addr,addrlen);
    ser_addr.sin_family=AF_INET;
    ser_addr.sin_addr.s_addr=inet_addr(seraddr);
    ser_addr.sin_port=htons(SERVER_PORT);
    if(connect(cli_sockfd,(struct sockaddr*)&ser_addr,&addrlen)!=0)/*请求连接*/
    {
        /*连接失败 */
        fprintf(stderr,"Connect Error:%s\n",strerror(errno));
        close(cli_sockfd);
        exit(1);
    }
    strcpy(msg,"hi,I am client!");
    send(sockfd,msg,sizeof(msg),0);/*发送数据*/
    recv(sockfd,msg,MAX_MSG_SIZE,0); /* 接受数据*/
    printf("%s\n",msg);/*在屏幕上打印出来 */
    close(cli_sockfd);
}

3、UDP/IP应用编程接口(API)
服务器的工作流程:首先调用socket函数创建一个Socket,然后调用bind函数将其与本机地址以及一个本地端口号绑定,接收到一个客户端时,服务器显示该客户端的IP地址,并将字串返回给客户端。 
 

int main(int argc,char **argv)
{
    int ser_sockfd;
    int len;
    //int addrlen;

    socklen_t addrlen;
    char seraddr[100];
    struct sockaddr_in ser_addr;
    /*建立socket*/
    ser_sockfd=socket(AF_INET,SOCK_DGRAM,0);
    if(ser_sockfd<0)
    {
        printf("I cannot socket success\n");
        return 1;
    }
    /*填写sockaddr_in 结构*/
    addrlen=sizeof(struct sockaddr_in);
    bzero(&ser_addr,addrlen);
    ser_addr.sin_family=AF_INET;
    ser_addr.sin_addr.s_addr=htonl(INADDR_ANY);
    ser_addr.sin_port=htons(SERVER_PORT);
    /*绑定客户端
    if(bind(ser_sockfd,(struct sockaddr *)&ser_addr,addrlen)<0)
    {
    printf("connect");
    return 1;
    }
    while(1)
    {
    bzero(seraddr,sizeof(seraddr));
    len=recvfrom(ser_sockfd,seraddr,sizeof(seraddr),0,(struct sockaddr*)&ser_addr,&addrlen);
    /*显示client端的网络地址*/

    printf("receive from %s\n",inet_ntoa(ser_addr.sin_addr));
    /*显示客户端发来的字串*/ 
    printf("recevce:%s",seraddr);
    /*将字串返回给client端*/
    sendto(ser_sockfd,seraddr,len,0,(struct sockaddr*)&ser_addr,addrlen);
}

客户端的工作流程:首先调用socket函数创建一个Socket,填写服务器地址及端口号,从标准输入设备中取得字符串,将字符串传送给服务器端,并接收服务器端返回的字符串。最后关闭该socket。
 

int GetServerAddr(char * addrname)
{
    printf("please input server addr:");
    scanf("%s",addrname);
    return 1;
}
int main(int argc,char **argv)
{
    int cli_sockfd;
    int len;
    socklen_t addrlen;
    char seraddr[14];
    struct sockaddr_in cli_addr;
    char buffer[256];
    GetServerAddr(seraddr);
    /* 建立socket*/
    cli_sockfd=socket(AF_INET,SOCK_DGRAM,0);
    if(cli_sockfd<0)
    {
        printf("I cannot socket success\n");
        return 1;
    }
    /* 填写sockaddr_in*/
    addrlen=sizeof(struct sockaddr_in);
    bzero(&cli_addr,addrlen);
    cli_addr.sin_family=AF_INET;
    cli_addr.sin_addr.s_addr=inet_addr(seraddr);
    //cli_addr.sin_addr.s_addr=htonl(INADDR_ANY);

    cli_addr.sin_port=htons(SERVER_PORT);
    bzero(buffer,sizeof(buffer));
    /* 从标准输入设备取得字符串*/
    len=read(STDIN_FILENO,buffer,sizeof(buffer));
    /* 将字符串传送给server端*/
    sendto(cli_sockfd,buffer,len,0,(struct sockaddr*)&cli_addr,addrlen);
    /* 接收server端返回的字符串*/
    len=recvfrom(cli_sockfd,buffer,sizeof(buffer),0,(struct sockaddr*)&cli_addr,&addrlen);
    //printf("receive from %s\n",inet_ntoa(cli_addr.sin_addr));

    printf("receive: %s",buffer);
    close(cli_sockfd);
}

四、调试
Makefile文件为:
 

CC=gcc
        all:server client
        CFLAGS=-o
        server: server.c
         $(CC) $(CFLAGS) $@ server.c
        client: client.c
        $(CC) $(CFLAGS) $@ client.c
clean:
        rm -f server client

在shell中执行make进行编译,make clean删除生成文件。
本文转载至:http://blog.youkuaiyun.com/mao834099514/article/details/52763490
socket、tcp、udp、http 的认识及区别 阅读详情

相关推荐

TCP-UDP过网闸

TCP转UDP传输的源码,可以穿透网闸,代码稳定精炼

计算机网络——SOCKET、TCP、HTTP之间的区别与联系

计算机网络——SOCKET、TCP、HTTP之间的区别与联系

NRWHF的博客 7624

Unity Shader学习笔记/Urp/水墨风效果

Unity Shader学习

qq_63133691的博客 2118

TCP/UDP/Socket 通俗讲解

socket 和TCP,UDP

weixin_43225966的博客 3269

智能车学习日记【二】————十字和斜入十字

智能车学习日记【二】————十字和斜入十字 文章目录 智能车学习日记【二】————十字和斜入十字 前言 一、普通十字补线 二、斜入十字 1.判断是否为斜入十字和斜入十字类型 2.找斜入十字拐点 总结 前言 经过了一个多月的学习,小白的我终于也是能较稳定调出了2.8m以上的四轮车,过程中也遇到了很多困难,其中就有十字补线和斜入十字补线。尤其是斜入十字也是困扰了我快一周,现在和大家分享一下我处理斜入十字的方法(我的方法其实还有很多漏洞需要改进,仅供大家参考理解一下,欢迎各位在评论区指点出可

bsefef的博客 2743

QDMA工程搭建/windows驱动编译与性能测试

请注意,根据您的目标操作系统,您可能需要在windows启动配置中启用测试签名的驱动程序,以便启用此驱动程序的安装。右键单击设备,选择更新驱动程序软件,然后选择构建的QDMA驱动程序的文件夹(通常为。创建一个新工程,在IP Catalog中搜索QDMA,双击创建qdma ip核。驱动程序安装安装驱动程序最简单的方法是通过Windows的“设备管理器”。如果系统提示未经验证的驱动程序发布者,请选择无论如何安装此驱动程序软件。本节主要介绍QDMA驱动在Windows系统的源文件、编译和安装过程。

qq_28455081的博客 2287

【Linux/C++网络篇(一) 】网络编程入门:一文搞懂 TCP/UDP 编程模型与 Socket 网络编程

本文带你从零入门 C/C++ 网络编程,深入解析 Socket 核心机制。文章首先厘清字节序(大小端)、IP 地址及端口号等基础概念,详解 htonl/inet_addr 等关键转换函数。随后,通过完整的代码实战,分别演示了基于 TCP 的面向连接通信与基于 UDP 的无连接通信流程,对比了两者在 C/S 模型下的实现差异。无论是理解网络底层原理,还是手写第一个 Echo 服务器,本文都将为你打下坚实的后端开发基石,助你迈向高并发服务器开发之路。

2501_93095927的博客 5098

标准恢复二极管整流器的全球与中国市场2022-2028年:技术、参与者、趋势、市场规模及占有率研究报告

报告页数: 150 图表数: 100 报告价格:¥16800 本文研究全球与中国市场标准恢复二极管整流器的发展现状及未来发展趋势,分别从生产和消费的角度分析标准恢复二极管整流器的主要生产地区、主要消费地区以及主要的生产商。重点分析全球与中国市场的主要厂商产品特点、产品规格、不同规格产品的价格、产量、产值及全球和中国市场主要生产商的市场份额。 主要生产商包括: Yangzhou Yangjie Vishay Intertechnology Power Semiconductors Inc Nexperia B

Fj69258的博客 5850

【Linux网络编程】TCP/UDP编程模型

TCP编程模型UDP编程模型编程相关函数socket#include <sys/types.h> /* See NOTES */ #include <sys/socket.h>int socket(int domain, int type, int protocol);功能: 创建一个终端节点,设置通信的标准 参数: domain

colorfulshark 569

AI大模型学习(14)AI 小白入门!用 OpenCV+Python 打造人体姿态识别系统,超详细教程来了

这篇教程介绍了如何使用Python+OpenCV+MediaPipe搭建入门级人体姿态识别系统。主要内容包括:人体姿态识别的应用场景(如健身APP、体感游戏)、开发环境搭建(安装Python、OpenCV和MediaPipe库)、核心代码实现(通过30行代码完成摄像头姿态检测),以及进阶功能开发(深蹲动作纠正算法和PPT体感控制器)。教程详细解析了MediaPipe的BlazePose模型架构和33个关键点的生理学意义,并提供了多线程优化等性能提升方案。该项目适合AI初学者实践,无需复杂算法即可实现实时人体

isoft888的专栏,致力于C#/python分享物联网、大数据,神经网络的等领域,欢迎讨论交流! 1554

redhawk-sc(seascape)学习日志2

design view是主view,是所有seascape view中最root的部分,一个design view可以驱动多种类型分析比如静态IR drop,动态IR drop以及EM.这些分析可以在不同的PVT和翻转率下.Design view是一个必须的view对于redhawk中的任何类型分析来说。seascape view相当于一个容器,用于保存各种和设计相关的数据,类似于逻辑信息、物理信息等等,每个view都有其对应的输入件和依赖,这些view都是redhawk用于各种类型的分析所需。

qq_39493558的博客 3502

嵌入式Linux开发之网络编程TCP/UDP模型

一、前言 TCP和UDP协议是TCP/IP协议的核心。TCP (Transmission Control Protocol)和UDP(User Datagram Protocol)协议属于传输层协议。 二、TCP编程模型 传输控制协议TCP (Transmission Control Protocol)是一种面向连接、可靠的协议。建立一个TCP连接,需要服务器和客户机进行3次握手。而拆除一个TCP...

路过的逮虾户的博客 288

VMD分子可视化实战:5个隐藏技巧让你的科研图像秒变顶刊级别

本文深入探讨了VMD分子可视化软件在科研图像美化中的5个高阶技巧,旨在帮助研究者将分子结构图提升至顶刊级别。内容涵盖原子色彩与材质的艺术化定制、沉浸式分子环境构建、专业构图与视角控制、数据驱动的动态可视化以及自动化工作流建立,通过精细的色彩映射、光照调整、周期性边界展示和脚本自动化,显著增强图像的科学叙事性与视觉冲击力。

weixin_29240343的博客 421

Linux网络编程 【2】 TCP模型、UDP模型、I/O多路复用模型select

一、socket Linux中的网络编程通过socket(套接字)接口实现,Socket是一种文件描述符 套接字socket有三种类型:流式套接字(SOCK_STREAM)数据报套接字(SOCK_DGRAM)原始套接字         流式的套接字 :可以提供可靠的、面向连 接的通讯流。它使用了TCP协议。TCP保证了数据传输的正确性和顺序性         数据报套接字:定义了一种

ljf_djcrs的博客 318

【Docker】一招解决超时镜像超时报错:`ERROR: Get https://registry-1.docker.io/v2/`

Docker 镜像拉取超时或失败并不是 Docker 本身的缺陷,而是网络环境和默认配置在特定场景下的限制所导致的结果。通过本文的分析可以看到,问题的核心往往集中在三个方面:网络访问延迟、DNS 解析速度以及客户端默认超时时间。针对这些问题,最直接、有效的做法是使用国内镜像加速器,这不仅能够显著提升拉取速度,还能保证在企业内网或家庭网络中更加稳定

博客 1029

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

Linux网络编程基础:OSI/TCP‑IP模型、IP协议、Socket‑UDP

本机IPC(信号、消息队列、共享内存,同一台主机);网络通信(跨主机进程通信)。网络通信核心目标:在不同主机上找到目标进程完成数据交互。IP地址定位主机,端口号定位主机内部进程,二者唯一确定通信端点。本文从网络理论模型出发,向下落地到Linux下UDP套接字编程实践。inet_addr函数已经标记废弃,新项目建议使用inet_pton;UDP客户端不需要bind,操作系统自动分配随机端口;只有服务端需要bind固定端口;recvfrom的最后一个参数addrlen是传入传出指针参数。

m0_69717451的博客 443

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

linux网络编程--tcp/udp编程模型

tcp 模型如下: 上面的模型已经很清楚了 具体函数用法就不细说了 请看tcp简单的例子: 其中server.c #include <stdio.h>#include <string.h>#include <stdlib.h>#include <sys/socket.h>#include <sys/types.h>#incl...

weixin_30624825的博客 145

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

基于Linux网络编程总结复盘

Socket是一种网络通信的接口,它提供了一组函数和数据结构,用于在网络上发送和接收数据。通过Socket,进程可以与其他主机上的进程进行通信。在Linux网络编程中,Socket是一项重要的技术。

weixin_71951947的博客 164

Linux系统之网络编程

Linux系统之网络编程1 网络基础理论1.1 OSI模型与TCP/IP协议1.2 TCP/IP体系模型1.2 TCP与UDP1.3 IP地址、端口、字节序1.4 socket相关函数1.4.1 socket()函数1.4.2 bind()函数1.4.3 listen()函数1.4.4 accept()函数1.4.5 connect()函数1.4.6 send()函数1.4.7 recv()函数1.4.8 sendto()函数1.4.9 recvfrom()函数1.5 TCP编程1.6 TCP粘包和拆包1.

乐享的博客 1693

Linux下网络编程基础知识--协议

Linux下网络编程基础知识--协议

qq_61585528的博客 1056

Linux UDP网络编程套接字sockets

在学校我们用学号,相比于身份证更简便,假如我的学号是2211211023,这样就能看到我是22级的,方便阅读信息。但是,这两个结构体都不用,我们用 sockaddr。网络通信的本质是进程间通信,有了 IP 就可以标识公网内唯一的一台主机,想要完成网络通信我们还需要一个东西来标识一台主机上的某个进程,这个标识就是端口号(port)。三种应用场景:网络套接字主要运用于跨主机之间的通信,也能支持本地通信,而域间套接字只能在本地通信,而原始套接字可以跨过传输层(TCP/IP 协议)访问底层的数据。

puppy_1mo的博客 1125

Linux网络编程6——UDP通信

C++网络编程——UDP通信

墨城烟柳ベ旧人殇的博客 524

linux服务器程序设计模型,Linux网络编程--9.服务器模型

Linux网络编程--9.服务器模型2008-09-08 17:26·稿源:互联网学习过《软件工程》吧.软件工程可是每一个程序员"必修"的课程啊.如果你没有学习过,建议你去看一看.在这一章里面,我们一起来从软件工程的角度学习网络编程的思想.在我们写程序之前,我们都应该从软件工程的角度规划好我们的软件,这样我们开发软件的效率才会高.在网络程序里面,一般的来说都是许多客户机对应一个服务器.为了处理客户...

weixin_39642990的博客 106

Linux网络编程基础1(网络应用程序设计模式,分层模型,协议格式)

Linux网络编程基础(网络应用程序设计模式,socket编程,inet_pton,inet_ntop,服务端创建连接的过程,客户端创建连接的过程,socket函数封装)1. 网络应用程序设计模式2. 分层模型3. 协议3.1 协议的概念3.2 协议格式3.2.1 以太网帧格式 -- 借助mac地址完成数据报传递3.2.2 IP段格式3.2.3 UDP数据包格式3.2.4 TCP数据报格式4. 数据的发送和接收5. TCP/UDP简要 1. 网络应用程序设计模式 1. C/S - client/server

kuanyew的博客 1317

Linux高并发网络编程开发——网络编程基础-socket

在学习Linux高并发网络编程开发总结了笔记,并分享出来。有问题请及时联系博主:Alliswell_WP,转载请注明出处。 10-Linux系统编程-第10天(网络编程基础-socket) 目录:一、Linux网络编程阶段二、网络基础1、网络开发两种设计模式2、协议的概念3、网络模型分层—两种4、以太网帧协议5、IP协议6、UDP协议7、TCP协议8、数据发送和接收9、TCP、UDP传输...

Alliswell_WP 406

Linux网络编程

Linux网络编程关键词: Linux网络编程 如果你想进入LINUX神奇的网络编程世界,请跟我来,在学习之前,我只需要你拥有一定的C语言编程知识,就足够了。我会讲述编写网络程序需要的基本知识。好,今天,让我们一起来看看,网络编程的基本模型--客户/服务器

355
上一篇: C++类的封装
下一篇: C++之多文件编程
LiBin1103
博客等级 码龄9年 38粉丝 68原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值