首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏changxin7

    3.网络编程 网络编程

    还有一些其他的地址家族,不过,他们要么是只用于某个平台,要么就是已经被废弃,或者是很少被使用,或者是根本没有实现,所有地址家族中,AF_INET是使用最广泛的一个,python支持很多种地址家族,但是由于我们只关心网络编程 TCP协议独立于 write()/send() 函数,数据有可能刚被写入缓冲区就发送到网络,也可能在缓冲区中不断积压,多次写入的数据被一次性发送到网络,这取决于当时的网络情况、当前线程是否空闲等诸多因素 与客户端建立连接, 拨号 # 1 制定file_info file_info = { 'file_path': r'D:\lnh.python\pyproject\PythonReview\网络编程 len(every_data) phone.send(every_data) phone.close() client端 FTP上传下载文件的代码(升级版)(注:咱们学完网络编程就留 网络编程的作业   好了同学们,到了这儿,我们的网络编程socket就讲完了,大致就是这些内容,给大家留个作业:(你的努力的成果你自己是看的到的~!)   

    2.9K21发布于 2019-08-20
  • 来自专栏我的博客

    Linux网络】Socket编程:TCP网络编程

    在前面的文章中,我们使用了UDP进行网络编程,这篇文章我们就来使用另一个TCP进行网络编程,我们知道UDP和TCP都是传输层协议,但是特点不同,前者无连接,不可靠传输,面向数据报,后者有连接,可靠传输 大体框架 1.1 补充 首先,在之前的UDP网络编程中,我们是直接使用的硬编码,例如退出码直接就设为1、2、3等,显然这并不是一个很好的选择,那么这里我们可以统一设计一个服务器的退出码,就像之前设计日志等级一样 (网卡)发来的连接我们都愿意接受,所以我们地址结构中的成员 sin_addr 需要设置为 INADDR_ANY,也就是IP地址此时为0,这在UDP网络编程时我们已经详细介绍了原因,这意味着我们服务端在使用 直接向目标服务器发起建立连接的请求 return 0; } 我们这里也不需要显式bind,关于原因我们在udp网络编程时已经说明了,那我们应该做什么呢? ,上层服务我们可以和UDP网络编程一样,直接在服务端主程序调用其他的服务,就比如之前实现的翻译和路由转发,然后在服务端接收数据时,将数据回调处理,最后将结果写回客户端。

    21110编辑于 2025-12-22
  • 来自专栏开源519

    网络编程 - Linux Socket编程

    Linux Socket编程 ---- 目录 前言 Socket的功能 Socket基础 Socket类型 基本结构 基本转换函数 基本Socket使用 TCP Socket实例 UDP Socket实例 疑难问题记录 总结 ---- 前言   socket(套接字)是网络编程编程的一种技巧。 本篇不涉及太底层的网络原理,仅说明socket的基本使用方法。主要参考《Linux网络编程》。本篇源码获取方式见文底小字。 = 3) { TCLT_LOG("usage ./tcp_client <ip> <port>. 网络编程非常有趣,能够实现天南海北之间的通讯,让远距离的人与人、人与物或者物与物之间产生联系,很有意思! 最后 用心感悟,认真记录,写好每一篇文章,分享每一框干货。

    11K50编辑于 2023-03-09
  • 来自专栏南桥谈编程

    Linux网络编程网络基础 | Socket 编程基础

    我们的网络编程主要就是针对应用层. 物理层我们考虑的比较少, 我们只考虑软件相关的内容. 因此很多时候我们直接称为 TCP/IP 四层模型. 再识协议 为什么要有 TCP/IP 协议? 之前我们在学习系统编程的时候知道访问公共资源就是临界资源,那么这里的局域网就是一个临界资源(以太网中, 任何时刻, 只允许一台机器向网络中发送数据)。 : IP 网络层存在的意义: 提供网络虚拟层, 让世界的所有网络都是 IP 网络, 屏蔽 最底层网络的差异 Socket 编程预备 理解源 IP 地址和目的 IP 地址 IP在网络中是用来标识主机的唯一性 sockadder结构 socket API 是一层抽象的网络编程接口,适用于各种底层网络协议,如 IPv4、 IPv6,以及 后面要讲的 UNIX Domain Socket. 关于Socket套接字编程后续文章会详细讲解。

    53010编辑于 2024-10-14
  • 来自专栏全栈程序员必看

    linux socket udp编程_linux网络编程socket

    文章目录 前言 一、UDP是什么 二、UDP 数据报服务特点 二、UDP 编程流程 1.服务器 2.客户端 3.输出结果 总结 前言 浅谈UDP。 二、UDP 编程流程 1.服务器 代码如下(示例): int main() { int sockfd = socket(AF_INET,SOCK_DGRAM,0); assert( sockfd recvfrom(sockfd,buff,127,0,(strcut sockaddr*)&caddr,&len); printf("buff=%s\n",buff); if(strncmp(buff,"end",3) while(1) { char buff[128]={ 0}; printf("input\n"); fgets(buff,127,stdin); if(strncmp(buff,"end",3) sockfd,buff,127,0,(struct sockaddr*)&saddr,&len); printf("recv:%s\n",buff); } close(sockfd); exit(0); } 3.

    11.9K20编辑于 2022-10-04
  • 来自专栏学习笔记

    Linux网络编程(一)

    在数据进行传输之前,会先自顶向下贯穿网络协议栈完成数据的封装,其中在网络层封装的IP报头当中就涵盖了源IP地址和目的IP地址。 这时通过源IP地址+源端口号就能够在网络上唯一标识发送数据的进程,通过目的IP地址+目的端口号就能够在网络上唯一标识接收数据的进程,此时就实现了跨网络的进程间通信。 一台机器上可能会有大量的进程,但并不是所有的进程都要进行网络通信,可能有很大一部分的进程是不需要进行网络通信的本地进程,此时PID虽然也可以标识这些网络进程的唯一性,但在该场景下就不太合适了。 为什么网络字节序采用的是大端?而不是小端? 网络字节序采用的是大端,而主机字节序一般采用的是小端,那为什么网络字节序不采用小端呢? socket编程接口 socket常见接口: 创建套接字:(TCP/UDP,客户端+服务器) int socket(int domain, int type, int protocol); 绑定端口号

    39810编辑于 2025-05-29
  • 来自专栏编程学习基地

    Linux网络编程TCP

    TCP/IP协议 TCP/IP 协议栈是一系列网络协议(protocol)的总和,是构成网络通信的核心骨架,它定义了电子设备如何连入因特网,以及数据如何在它们之间进行传输。 OSI 7层模型和TCP/IP四层网络模型对应关系 计算机网路基础的知识不过多讲解,主要是让大家明白接下来的Linux网络编程数据流属于那一层,具体如下图 TCP/IP协议数据流示意图 我们接下来讲解的 Linux网络编程Tcp协议是属于传输层的协议 Linux Socket 网络编程 TCP协议 TCP是面向连接的可靠的传输层协议。 TCP编程 Linux中的网络编程是通过socket接口来进行的。socket是一种特殊的I/O接口,它也是一种文件描述符。常用于不同机器上的进程之间的通信,当然也可以实现本地机器上的进程之间通信。 int default_port = 8000; struct sockaddr_in servaddr; /*判断是否为合法输入 必须传入一个参数:服务器Ip*/ if(argc<3)

    6.5K30发布于 2021-11-16
  • 来自专栏用户2442861的专栏

    Linux网络编程书籍

    先要学习网络知识才谈得上编程 讲述计算机网络的最经典的当属Andrew S.Tanenbaum的《计算机网络》第五版,这本书难易适中。 详解的作者还写了另外2本经典著作,《Unix环境高级编程》,《Unix网络编程》二卷本。 说明:搞Linux网络编程的,想学TCP/IP的一定要看大师W.Richard Stevens这六本书,基本上六本书看完基础也就搭好了。 ? ? ? ? ? ? 网络体系结构:linux内核中网络协议的设计与实现》 ? 一本在kernel实现网络功能的基础书籍,最好还是看英文版的,翻译的实在太烂了。有条件的还是看原版吧,没办法啊,中国的此类书籍基本上落后老美3-4年。结合linux源代码分析一书收获更多。

    4.3K30发布于 2018-09-14
  • 来自专栏python3

    网络编程3要素

    1.找到对方ip 2.找到应用程序端口 3.定义相同的通信协议 关于ip: 127.0.0.1本地回环地址,可用于ping网卡 xxx.xxx.xxx.255 广播地址,网段内的计算机都能收到 关于端口 对osi参考模型的简单解释: 我想把数据“你好”通过qq发送给网络中的另一台计算机 先根据应用测数据封装规则,将数据进行封装,传到表示层 表示层根据自己的数据封装规则,再将数据进行分装,传到会话层, 会话层根据自己的数据封装规则 ,再将数据进行封装,传到传输层, 传输层根据自己的数据封装规则,再将数据进行封装,传到网络层, 网络层根据自己的数据封装规则,再将数据进行封装,传到数据链路层 数据链路层根据自己的数据封装规则,再将数据进行封装 另一台计算机,在按照相反的方向,进行每一层的解析,最后到应用层找到 qq应用程序的端口,传输给socket接收 其中应用层的常见协议有::HTTP,HTTPS,FTP,TELNET,SSH,SMTP,POP3

    40930发布于 2020-01-14
  • 来自专栏我的博客

    Linux网络】Socket编程:UDP网络编程实现ChatServer

    上篇文章我们实现了英译汉的网络字典,客服端向服务端发送英文,服务端接收数据后回调处理,将翻译后的中文再转发给客户端,这其实和EchoSever一样都是一对一的网络通信。 } private: int _socketfd; uint16_t _port; // 端口号 bool _isrunning; func_t _func; }; 3. = 3) { std::cerr << "Usage: " << argv[0] << " server_ip server_port" << std::endl; if(n < 0) { LOG(LogLevel::FATAL) << "sendto error"; return 3; ; if (n < 0) { LOG(LogLevel::FATAL) << "sendto error"; exit(3)

    17210编辑于 2025-12-22
  • 来自专栏我的博客

    Linux网络】Socket编程:UDP网络编程实现DictServer

    网络通信部分 首先我们网络通信不需要改变,只需要稍微修改添加一些新的变量,服务端在接收客户端发来的数据,然后回调去处理翻译这个动作,所以我们可以使用包装器function来包装一个函数指针,用于回调处理翻译 { LOG(LogLevel::FATAL) << "sendto error"; exit(3) LogLevel::DEBUG) << "进入到了翻译模块: " << word << "->" << iter->second; return iter->second; } 3. = 3) { std::cerr << "Usage: " << argv[0] << " server_ip server_port" << std::endl; if(n < 0) { LOG(LogLevel::FATAL) << "sendto error"; return 3;

    14910编辑于 2025-12-22
  • 来自专栏C/C++进阶专栏

    Linux网络编程——UDP组播编程

    一,基础概念 数据报文在网络中的点对点传输方式通常有以下三种: 单播(Unicast): 数据报文从一个发送端到一个接收端的通信方式。 designs-examples-using-multicasting-af-inet https://os.mbed.com/handbook/Socket https://subingwen.cn/linux

    6.1K40编辑于 2023-09-04
  • 来自专栏我的博客

    Linux网络】Socket编程:UDP网络编程实现Echo Server

    在上篇文章中,我们已经铺垫了一些前置知识,这一篇文章我们就来实现UDP网络编程,实现一个Echo Server,就是客户端给服务端发送一条消息,服务端接收后,再转发给客户端,回显出来 1. :操作系统内核实现了复杂的TCP/IP协议栈,用户不能直接操作这些协议栈,所以我们说它是一组API,是应用程序与网络协议栈之间的编程接口。 这么说也没有毛病 在哲学上:我们认为它是一种抽象和解耦,它隐藏了网络协议的所有复杂性,让程序员可以用“打开-读-写-关闭”这种类似文件操作的简单模式来进行网络编程。 那还说啥了,更没毛病了 用一句话来概括,Socket(套接字)是网络通信的端点,是操作系统提供给应用程序的一组编程接口(API),应用程序通过调用这套接口,就可以利用网络协议栈(如TCP/IP)进行网络通信 /udpserver port ltx@qsy:~/gitLinux/Linux_network/SocketUDP/EchoServer$ .

    22710编辑于 2025-12-22
  • Linux网络编程网络层IP协议

    8位服务类型:3 位优先权字段(已经弃用),,4 位 TOS 字段, 和1 位保留字段(必须置为 0)。 4 位 TOS 分别表示:最小延时,,最大吞吐量, 最高可靠性,最小成本。 3位标志字段: 第一位保留(保留的意思是现在不用, 但是还没想好说不定以后要用到)。第二位置为 1 表示禁止分片, 这时候如果报文长度超过 MTU,IP 模块就会丢弃报文。 网段划分 IP地址分为两部分:网络号和主机号 网络号: 保证相互连接的两个网段具有不同的标识; 主机号: 同一网段内,主机之间具有相同的网络号,但是必须有不同的主机号; 不同的子网其实就是把网络号相同的主机放到一起 如果在子网中新增一台主机,则这台主机的网络号和这个子网的网络号一致, 但 是主机号必须不能和子网中的其他主机重复。 ,没有 G 标志的条目表示目的网络地址是与本机接口直接相连的网络,不必经路由器转发;

    18410编辑于 2025-12-30
  • Linux网络编程网络基础概念(下)

    Linux系统中,我们可以通过ifconfig命令来查看自己机器的MAC地址: ether后面就是mac地址。 IP 网络层存在的意义:提供网络虚拟层,让世界的所有网络都是 IP 网络,屏蔽最底层网络的差异 最初通信依赖MAC地址,但MAC只能在局域网生效,且无法分层管理。 IP层的引入屏蔽了底层网络差异(如以太网、Wi-Fi、光纤),通过逻辑化的IP地址实现全球路由,让不同技术的网络能无缝互联。 二、socket编程预备 IP在网络中,用来标识一个主机的唯一性。 我们之前在学习系统编程的时候, 学习了 pid 表示唯一一个进程 ; 此处我们的端口号也是唯一表示一个进程. 那么这两者之间是怎样的关系 ? 2.4、sockaddr 结构 socket API 是一层抽象的网络编程接口 , 适用于各种底层网络协议 , 如 IPv4 、 IPv6, 以及后面要讲的 UNIX Domain Socket.

    25210编辑于 2025-10-22
  • 来自专栏各类技术文章~

    Linux网络编程基础API

    好在Linux内核检测到TCP紧急标志时,将通知应用程序有带外数据需要接收。内核通知应用程序带外数据到达的两种常见方式是: 1O复用产生的异常事件和SIGURG信号。 对这种情况,Linux给开发人员提供的解决方案是:对监听socket设置这些socket选项,那么accept返回的连接socket将自动继承这些选项。 网络信息API 利用域名获取IP地址 IP地址比域名发生变更的概率要高,所以利用IP地址编写程序并非上策。 addrinfo结构体中,ai_ protocol 成员是指具体的网络协议,其含义和socket系统调用的第三个参数相同,它通常被设置为0。ai_fags 成员可以取表中的标志的按位或。 getnameinfo和getaddrinfo函数成功时返回0,失败时返回错误码,可能的错误码如表: Linux下strerror函数能将数值错误码error转换成易读的字符串形式,同样下面的函数可将表错误码转换成字符串形式

    1.9K20编辑于 2021-12-15
  • 来自专栏乐意学点小编程

    Linux】socket网络编程基础

    ,它们确保了数据在复杂的网络环境中能够准确、高效地传输,在数据发送前,发送设备会在 IP 数据包的头部封装好源 IP 地址和目的 IP 地址,然后数据在网络中传输时,路由器等网络设备会根据这些地址信息进行路由选择和数据转发 /将一个 32 位的无符号整数从网络字节序转换为主机字节序 uint16_t ntohs(uint16_t netshort);//将一个 16 位的无符号整数从网络字节序转换为主机字节序 五、网络通信的本质 连接,一个用于控制命令的传输,另一个用于数据的传输 简单邮件传输协议(SMTP):用于发送电子邮件,它规定了邮件客户端如何将邮件发送到邮件服务器,以及邮件服务器之间如何进行邮件的转发 邮局协议(POP3) 互联网消息访问协议(IMAP):也是用于接收电子邮件的协议,与 POP3 不同的是,IMAP 允许用户在邮件服务器上管理邮件,而不仅仅是下载邮件到本地 域名系统(DNS):用于将域名解析为对应的 IP 地址,当用户在浏览器中输入域名时,DNS 服务器会将域名转换为对应的 IP 地址,以便浏览器能够找到对应的 Web 服务器 七、socket编程基础 1、调用接口 (一)创建描述符 #include <

    61410编辑于 2025-05-28
  • 来自专栏后台技术杂项笔记

    Linux网络编程API(二)

    相关API笔记(二) Linux网络编程高级I/O函数 1. pipe pipe函数用于创建一个管道,实现进程间通信 #include <unistd.h> //成功返回0,失败返回-1并设置errno file_descriptor_two); 参数: dup和dup2的参数都是文件描述符,具体作用如下: dup函数创建一个新的文件描述符,该新的描述符和原有文件描述符file_descriptor指向相同文件,管道或者网络连接 close(fd); } //使用dup2 void dup2_out(){ dup2(fd, STDOUT); printf("dup2"); close(fd); } 3. connfd ret = writev(connfd, iv, 2); //readv,分散读,把键盘的输入读出并放入到buf1,buf2中 ret = readv(STDIN_FILENO, iv, 2); 3.

    1.3K10编辑于 2022-09-26
  • 来自专栏学习之路

    Linux网络#2】: Socket 编程

    个人主页:island1314 个人专栏:Linux—登神长阶 1. 客户端程序的端口号, 就是由操作系统从这个范围分配的 3. Socket 编程 6.1 socket 常见API Socket API 是一层网络编程接口,抽象了底层的网络协议,定义在 netinet/in.h 中。 实际上在网络上通信的时候套接字种类是比较多的,下面是常见的三种: unix 域间套接字编程--同一个机器内 原始套接字编程--网络工具 网络套接字编程--用户间的网络通信 设计者想将网络接口统一抽象化 --参数的类型必须是统一的,底层是一种多态的设计 运用场景: 网络套接字:运用于网络跨主机之间通信+本地通信 unix域间套接字: 本地通信 我们现在在使用网络编程通信时是应用层调传输层的接口,而原始套接字

    52910编辑于 2025-06-02
  • 来自专栏cpp加油站

    linux网络编程系列(二)

    网络编程基本概念 1.1 什么是套接字 套接字,也叫socket,是操作系统内核中的一个数据结构,它是网络中的节点进行相互通信的门户。 一类是用户自己定义的,通常是大于1024并且小于65535的整型值; 1.3 ip地址的表示 通常我们在表达IP地址时习惯使用点分十进制表示的数值(或者是为冒号分开的十六进制Ipv6地址),而在socket编程中使用的则是二进制值 Ipv6地址),而在socket编程中使用的则是32位的网络字节序的二进制值,这就需要对这两个数值进行转换。 inet_ntoa(myaddr)); /* inet_ntop */ inet_ntop(AF_INET, &myaddr, ip, 16); puts(ip); return 0; } 3. 在linux中,最常用的是gethostbyname()和gethostbyaddr(),它们都可以实现IPv4/IPv6的地址和主机名之间的转化。

    1.2K30发布于 2021-04-16
领券