首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Linux网络套接字(二)

首先是写出服务器的代码,代码的思路是这样的: ①首先为服务器创建套接字,因为这个是TCP协议,TCP是面向连接的,因此服务器是需要进入监听状态才能让客户端连接,所以使用socket接口创建出来的套接字是属于监听套接字...,会给父进程发送信号 ServerceIO(new_sock); //关闭套接字,也就是关闭fd //如果忘记关闭不需要的文件描述符,导致文件描述符泄漏...socket()方法本质是打开文件,这是跟系统相关的。 ②绑定ip和端口号,使用bind()方法,本质是ip+port+文件信息进行关联。...⑥进行网络通信,使用文件读写的方式,read/wirte的方法。关 ⑦闭监听套接字close(fd),本质:a、在系统层面,释放曾经申请的文件资源和连接资源等待。...⑧关闭用于通信的套接字close() && server/client,本质是在网络层面进行四次挥手! 三次握手: 在服务器建立连接的时候: 调用socket, 创建文件描述符。

2K30
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Linux网络-套接字编程基础

    Linux网络编程套接字 零、前言 一、网络基础知识 1、源IP地址和目的IP地址 2、源MAC地址和目的MAC地址 3、认识端口号 4、PORT VS PID 5、TCP和UDP协议 6、网络字节序...二、socket编程接口 1、sockaddr结构 2、socket 常见API 零、前言 本章就Linux网络编程进行概念及接口学习,下一篇则是简单的进行上手网络套接字编程 一、网络基础知识 1...位的长整数从主机字节序转换为网络字节序 如果主机是小端字节序,这些函数将参数做相应的大小端转换然后返回;如果主机是大端字节序,这些函数不做转换,将参数原封不动地返回 二、socket编程接口 1、sockaddr结构 套接字不仅支持跨网络的进程间通信...,还支持本地的进程间通信(域间套接字) 因此套接字提供了sockaddr_in结构体和sockaddr_un结构体,其中sockaddr_in结构体是用于跨网络通信的,而sockaddr_un结构体是用于本地通信的...为了让套接字的网络通信和本地通信能够使用同一套函数接口,于是就出现了sockeaddr结构体,该结构体与sockaddr_in和sockaddr_un的结构都不相同,但这三个结构体头部的16个比特位都是一样的

    1.5K20

    Linux网络-TCPUDP套接字编程

    零、前言 本章主要是对套接字网络编程的一个学习,目标是能够基本的进行套接字编程 一、UDP套接字 1、创建套接字 无论是服务端还是客户端,进行网络编程需要做的第一件事就是创建套接字 socket...,不需要选中in_addr结构当中的32位的成员传入,直接传入in_addr结构体即可 注:上述函数在转化ip格式时同时也会自动进行网络字节序的转化 服务端创建套接字,即底层打开了对应的网络套接字文件...相比于UDP套接字来说,TCP套接字与之在一些地方是相同的,但是TCP的特点是面向链接的流式套接字,所以还是有很大的区别的 1、创建套接字 同样的tcp的服务端和客户端首先第一件事是创建套接字文件...这是一个输入输出型参数 返回值:获取连接成功返回接收到的套接字的文件描述符,获取连接失败返回-1,同时错误码会被设置 套接字文件之间的区别: socket函数创建的套接字文件:用于不断获取客户端发来的连接请求...,同文件的读写是一样是流式的,那么对于TCP来说,使用文件读写的方式进行读写套接字文件同样可以达到数据发送和接收的目的 读取套接字文件数据,即为接收对应套接字建立链接的远端发送来的消息;向套接字文件进行写入数据

    3.7K10

    Linux:网络编程套接字及UDP

    套接字的种类: 1、域间套接字(同一个机器内) struct sockaddr_un 2、原始套接字(网络工具)  原始套接字一般不关心传输层的东西,他一般是绕过传输层去考虑网络层和链路层,所以他一般被用来封装一些网络工具...二、UDP 2.1 服务端  所需要的类型:  int _sockfd;//创建套接字对应的文件描述符  uint16_t _port;//端口号  string _ip;//服务端的ip地址  ...1、首先要创建套接字 第一个参数  是套接字的域,AF_LOCAL是本地的,AF_INET是网络ipv4的 第二个参数  是套接字的类型  SOCK_STREAM是面向字节流的(TCP),SOCK_DGRAM...是面向数据报的(UDP) 第三个参数  是协议类型  目前默认为0 返回值是如果创建成功返回文件描述符 (相当于是一个可以写入网络的一个文件),如果创建失败返回-1 2、绑定套接字 第一个参数是 文件描述符...类型 (1)我们先创建出来之后,然后可以用bzero(有点像C语言的memset)将指针内容先清空然后再填充 (2)local.sin_family  表明这个通用类型是属于网络套接字还是域间套接字 (

    11310

    20.8 OpenSSL 套接字SSL传输文件

    有了上面的基础那么传输文件的实现就变得简单了,在传输时通常我们需要打开文件,并每次读入1024个字节的数据包,通过SSL加密传输即可,此处的文件传输功能在原生套接字章节中也进行过详细讲解,此处我们还是使用原来的密钥对...服务端代码部分,此处我们只需要实现一个DownloadFile函数,该函数接收一个SSL套接字,与保存文件路径即可,其他部分同上。...= -1) { printf("客户端地址: %s --> 端口: %d --> 套接字: %d \n", inet_ntoa(their_addr.sin_addr), ntohs(their_addr.sin_port...,传入socket套接字句柄,需要发送的文件路径void UploadFile(SSL* ptr, const char* FilePath){ int FileSize = GetFileSize(...; closesocket(sockfd); SSL_CTX_free(ctx); system("pause"); return 0;}读者可自行编译这段代码,并首先启动服务端等待传输,接着打开客户端

    20140

    20.8 OpenSSL 套接字SSL传输文件

    有了上面的基础那么传输文件的实现就变得简单了,在传输时通常我们需要打开文件,并每次读入1024个字节的数据包,通过SSL加密传输即可,此处的文件传输功能在原生套接字章节中也进行过详细讲解,此处我们还是使用原来的密钥对...服务端代码部分,此处我们只需要实现一个DownloadFile函数,该函数接收一个SSL套接字,与保存文件路径即可,其他部分同上。...= -1) { printf("客户端地址: %s --> 端口: %d --> 套接字: %d \n", inet_ntoa(their_addr.sin_addr), ntohs...,传入socket套接字句柄,需要发送的文件路径 void UploadFile(SSL* ptr, const char* FilePath) { int FileSize = GetFileSize...closesocket(sockfd); SSL_CTX_free(ctx); system("pause"); return 0; } 读者可自行编译这段代码,并首先启动服务端等待传输,接着打开客户端

    29951

    Linux进程通信之Unix套接字(二)

    Unix套接字通信之Udp tcp和udp的区别 Tcp是可靠、稳定的,需要经过三次握手来建立连接,收发消息经过确认、Udp是不可靠的、不需要建立连接 Tcp需要建立连接确认,速度要比Udp不需要经过连接的慢一点...*/ $file= 'unix_udp_server'; //创建socket $socket = socket_create(AF_UNIX,SOCK_DGRAM,0); //bind 到文件...socket_bind($socket,$file); while (1) { //从套接字接收数据,无论它是否面向连接 $len = socket_recvfrom($socket...($status); fprintf(STDOUT,"child process exit pid=%s\n",$pid); 执行服务端代码php demo29.php,通过ls命令可以看到已经生成文件...,并且通过file命令可以看到生成的文件是一个socket文件,通过pstree -ap 查看启动的进程id,通过strace命令监控服务端进程 通过上面的执行结果可以看到,进程之间是可以进行通信的

    1.8K20

    【Linux】网络基础+UDP网络套接字编程

    套接字编程中,常见的有网络套接字编程,原始套接字编程,unix域间套接字编程。 网络套接字支持多主机跨网络通信,下面讲到的都是这个套接字编程。...初始化服务器的第一步就是创建服务器的套接字,通过套接字文件描述符能够帮助我们实现UDP的全双工通信。...还有一个非常重要的知识点就是关于sockfd套接字文件描述符,对sockfd进行读写操作时,实际操作的是文件描述符指向的套接字文件控制块(socket file control block),该文件控制块内部有发送和接收的缓冲区...,在进行消息的读取和发送时离不开套接字文件控制块的帮助,我们称这样的网络通信为全双工通信。...该函数原型如下,需要传递子进程执行的命令也就是command参数,以及管道文件的打开模式,可以是只读只写和追加,我们今天肯定是用只读打开,读取管道文件另一端的子进程执行指令的输出结果。

    40010

    Linux进程通信之Unix套接字(一)

    Linux进程通信之Unix套接字(一) 什么是套接字 所谓套接字(Socket),就是对网络中不同主机上的应用进程之间进行双向通信的端点的抽象。...一个套接字就是网络上进程通信的一端,提供了应用层进程利用网络协议交换数据的机制。...) AF_INET6(IPV6) AF_UNIX(本地通讯协议,一般用于进程通信,不需要经过网卡) 套接字类型 流套接字(SOCK_STREAM),提供一个顺序化的、可靠的、全双工的、基于连接的字节流。...TCP 协议即基于这种流式套接字。 数据报套接字(SOCK_DGRAM)即提供数据报文的支持。(无连接,不可靠、固定最大长度).UDP协议即基于这种数据报文套接字。...原始套接字(SOCK_RAW)即提供读取原始的网络协议。这种特殊的套接字可用于手工构建任意类型的协议。一般使用这个套接字来实现 ICMP 请求(例如 ping)。

    2.8K30

    【Linux网络】Linux网络编程套接字,UDP与TCP

    在众多网络编程技术中,套接字(Socket)编程无疑是核心与基石,它不仅支撑着Web服务、即时通讯、在线游戏等日常应用,还是实现分布式系统、云计算服务的关键技术之一。...在套接字编程的世界里,UDP(用户数据报协议)与TCP(传输控制协议)如同双生子,各自以其独特的优势占据着不同的应用场景。...本文旨在深入探讨Linux环境下,如何通过套接字编程技术,驾驭UDP与TCP这两种强大的网络传输协议,从零开始构建基础的网络通信能力。...struct sockaddr *dest_addr, socklen_t addrlen); // 用于从套接字接收数据的方法,特别是在使用UDP协议进行数据传输时 ssize_t recvfrom...通过这段旅程,我们一同见证了从基础概念到实践应用的华丽蜕变,从最初的套接字创建、绑定、监听,到数据的发送与接收,每一步都充满了挑战与收获。

    16410

    .iso文件怎么打开?

    下面介绍几种常见的打开.iso文件的方法。...第二步,在电脑里找得想要打开的iso文件,右击该文件,在右键菜单里点击“打开方式”,然后选择自己电脑安装的解压缩文件WinRAR或7-Zip。...第一步,点击“磁盘”菜单,然后选择“打开虚拟磁盘文件”。第二步,找到电脑里的iso文件,选中并点击“打开”按钮。第三步,查看iso里的数据。...方法三、使用虚拟机打开.iso文件如果自己下载的是操作系统的.iso镜像文件,并且想要体验或安装系统,除了刻录到光盘外,还可以通过虚拟机软件直接打开并运行.iso文件。...打开iso文件时需要注意:在打开或解压.iso文件时,请确保文件来源可靠,避免感染病毒或恶意软件。不同的软件可能操作界面略有不同,但基本原理相同,按照软件的提示操作即可。

    22910
    领券