返回顶部
首页 > 资讯 > 操作系统 >如何分析Linux系统中的socket编程
  • 287
分享到

如何分析Linux系统中的socket编程

2023-06-28 15:06:10 287人浏览 八月长安
摘要

这篇文章跟大家分析一下“如何分析linux系统中的Socket编程”。内容详细易懂,对“如何分析Linux系统中的socket编程”感兴趣的朋友可以跟着小编的思路慢慢深入来阅读一下,希望阅读后能够对大家有所帮助。下面跟着小编一起深入学习“如

这篇文章跟大家分析一下“如何分析linux系统中的Socket编程”。内容详细易懂,对“如何分析Linux系统中的socket编程”感兴趣的朋友可以跟着小编的思路慢慢深入来阅读一下,希望阅读后能够对大家有所帮助。下面跟着小编一起深入学习“如何分析Linux系统中的socket编程”的知识吧。

socket简介:

socket 是计算机网络中用于在节点内发送或接收数据的内部端点。具体来说,它是网络软件 (协议栈) 中这个端点的一种表示,包含通信协议、目标地址、状态等,是系统资源的一种形式。

它在网络中所处的位置大致就是下面的黑色部分,应用层与传输层之间。

如何分析Linux系统中的socket编程如何分析Linux系统中的socket编程

其中的传输层就是 tcp/IP 所在的地方,而你平时通过代码编写的应用程序大多属于应用层范畴,socket 在这里起到就是连接应用层与传输层的作用。

socket 的诞生是为了应用程序能够更方便的将数据经由传输层来传输,所以它本质上就是对 TCP/IP 的运用进行了一层封装,然后应用程序直接调用 socket api 即可进行通信。那么它是如何工作的呢?它分为 2 个部分,服务端需要建立 socket 来监听指定的地址,然后等待客户端来连接。而客户端则需要建立 socket 并与服务端的 socket 地址进行连接。

server端的简单示例:

经过前面的client端的学习,我们已经知道了如何创建socket,所以接下来就是去绑定他到具体的一个端口上去。

绑定socket到一个端口上去

bind()函数可以将socket绑定一个端口上,client可以通过这个端口发起请求,端口对应的socket便会与client端的socket连接。

 #include #include #include #include #Include  int main() { int socket_desc; struct sockaddr_in server;  socket_desc = socket(AF_INET,SOCK_STREAM,0); if(-1==socket_desc) { perror("socket create error\n"); exit(1); }  //监听服务器自身  server.sin_family=AF_INET; server.sin_port = htons(8888); server.sin_addr.s_addr = INADDR_ANY;  //绑定到端口  if(bind(socket_desc,(struct sockaddr* )&server,sizeof(server))对于socket绑定到一个明确的端口上,我们接下来要做的就是接受这个端口下面的所有数据。。通过上面的实现,我们可以看出一个端口只能被一个socket使用。监听端口:在绑定完成socket与端口之后,我们还需要去监听端口。为此,我们需要将socket设置在被监听的状态。listen()将被用来将socket设置为被监听的模式下。listen( socket_desc, 3);listen(int sockfd,int backlog);可以将socket处于监听的状态下接收请求建立连接: #include #include #include #include  int main() { int sock_desc,new_socket,sockaddr_size; struct sockaddr_in server,client;  //创建socket sock_desc = socket(AF_INET,SOCK_STREAM,0); if(-1==sock_desc) { perror("cannot create socket\n"); exit(1); }  server.sin_family = AF_INET; server.sin_port = htons(8888); server.sin_addr.s_addr = INADDR_ANY;  //绑定  if(bind(sock_desc,(struct sockaddr*)&server,sizeof(server))运行上述代码:输出:waiting for incoming connecions.现在代码已经正常跑起来了,并且等待请求连接。在另外一个终端内,我们发起一个请求:teltnet 127.0.0.1 8888在当前这个终端内将会输出:trying 127.0.0.1connected to loaclhost。Escape character is ;;connection closed by foreign host同时在之前的终端中,server会输出:waiting for incoming connecions.connection accepted便可以看到,server已经正确接收了client的连接请求并建立了连接,只是没有了后续操作,主机紧接着关闭了这个链接。连接建立之后便可以顺利地进行双方的通信,这部分的send与recv操作完全一样。另外, 服务端获取客户端的ip地址:由前面能够知道accept()返回的是结构体sockaddr_in ,由此很容易得知client的ip和端口信息。** ** char * client_ip = inet_ntoa(client.sin_addr);``int` `client_port = ntohs(client.sin_port);以上就是良许教程网为各位朋友分享的Linux系统相关内容。想要了解更多Linux相关知识记得关注公众号“良许Linux”,或扫描下方二维码进行关注,更多干货等着你!

关于如何分析Linux系统中的socket编程就分享到这里啦,希望上述内容能够让大家有所提升。如果想要学习更多知识,请大家多多留意小编的更新。谢谢大家关注一下编程网网站!

--结束END--

本文标题: 如何分析Linux系统中的socket编程

本文链接: https://lsjlt.com/news/320131.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • 如何分析Linux系统中的socket编程
    这篇文章跟大家分析一下“如何分析Linux系统中的socket编程”。内容详细易懂,对“如何分析Linux系统中的socket编程”感兴趣的朋友可以跟着小编的思路慢慢深入来阅读一下,希望阅读后能够对大家有所帮助。下面跟着小编一起深入学习“如...
    99+
    2023-06-28
  • Linux系统中Shell编程的示例分析
    这篇文章主要介绍Linux系统中Shell编程的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!一. 什么是Shell        1. 在学习Shell编程之前,我们...
    99+
    2023-06-26
  • PHP中SOCKET编程的示例分析
    这篇文章主要介绍了PHP中SOCKET编程的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。1. 预备知识一直以来很少看到有多少人使用php的socket模块来做一些事...
    99+
    2023-06-15
  • 如何分析Linux系统中的pam
    这篇文章主要为大家分析了如何分析Linux系统中的pam的相关知识点,内容详细易懂,操作细节合理,具有一定参考价值。如果感兴趣的话,不妨跟着跟随小编一起来看看,下面跟着小编一起深入学习“如何分析Linux系统中的pam”的知识吧。一、pam...
    99+
    2023-06-28
  • C/C++ Linux Socket网络编程流程分析
    目录一、Socket简介二、Socket编程基础 1. 网络字节序2. sockaddr数据结构3. IP地址转换函数三、Socket编程函数1. socket函数2.&n...
    99+
    2023-02-06
    C/C++ Linux Socket网络编程 Linux Socket网络编程 Socket网络编程
  • Linux系统中如何分析git
    这篇文章跟大家分析一下“Linux系统中如何分析git”。内容详细易懂,对“Linux系统中如何分析git”感兴趣的朋友可以跟着小编的思路慢慢深入来阅读一下,希望阅读后能够对大家有所帮助。下面跟着小编一起深入学习“Linux系统中如何分析g...
    99+
    2023-06-28
  • linux中socket编程常用头文件的示例分析
    这篇文章给大家分享的是有关linux中socket编程常用头文件的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。sys/types.h:数据类型定义sys/socket.h:提供socket函数及数据结构...
    99+
    2023-06-09
  • 如何解析Linux系统多线程编程
    这篇文章的内容主要围绕如何解析Linux系统多线程编程进行讲述,文章内容清晰易懂,条理清晰,非常适合新手学习,值得大家去阅读。感兴趣的朋友可以跟随小编一起阅读吧。希望大家通过这篇文章有所收获!Linux下的多线程编程1 引言  线程(thr...
    99+
    2023-06-28
  • VB.NET Socket编程的示例分析
    小编给大家分享一下VB.NET Socket编程的示例分析,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!下面通过例子来学习VB.NET Socket编程类的应用,下面的程序分别分服务器和客户端两部分:ImportsSyst...
    99+
    2023-06-17
  • Linux系统中如何分析内核
    本篇文章给大家分享的是有关Linux系统中如何分析内核,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。在Linux系统中,内核是一个很重要的部分,属于Linux系统中的核心程序。...
    99+
    2023-06-28
  • 如何分析Linux系统BSP
    小编今天带大家了解如何分析Linux系统BSP,文中知识点介绍的非常详细。觉得有帮助的朋友可以跟着小编一起浏览文章的内容,希望能够帮助更多想解决这个问题的朋友找到问题的答案,下面跟着小编一起深入学习“如何分析Linux系统BSP”的知识吧。...
    99+
    2023-06-28
  • 如何分析Linux系统umask
    本篇文章为大家展示了如何分析Linux系统umask,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。umask的主要作用就是指定在建立文件时预设的权限掩码,简单点说就是为了控制默认权限的。语  法:u...
    99+
    2023-06-28
  • 如何分析Linux系统中的目录结构
    如何分析Linux系统中的目录结构,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。在Linux系统中所有文件和目录都是以“/”节点为基础的树形结构,这和Windows有很大的...
    99+
    2023-06-28
  • 如何分析Linux文件系统
    这篇文章主要为大家分析了如何分析Linux文件系统的相关知识点,内容详细易懂,操作细节合理,具有一定参考价值。如果感兴趣的话,不妨跟着跟随小编一起来看看,下面跟着小编一起深入学习“如何分析Linux文件系统”的知识吧。用计算机都需要在硬盘驱...
    99+
    2023-06-28
  • Linux系统如何查看socket状态
    这篇文章主要为大家展示了Linux系统如何查看socket状态,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带大家一起来研究并学习一下“Linux系统如何查看socket状态”这篇文章吧。socket的API是在三次握手和四...
    99+
    2023-06-28
  • Linux系统中的PHP编程:如何使用API?
    PHP是一种广泛使用的服务器端脚本语言,它可以用来开发网站和Web应用程序。在Linux系统中,PHP编程具有很高的灵活性和可定制性,因为它可以通过使用各种API来访问系统和网络资源。本文将介绍一些常用的Linux系统API,以及如何在P...
    99+
    2023-11-08
    编程算法 api linux
  • 如何进行Linux系统syslog分析
    如何进行Linux系统syslog分析,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。一、日志系统之syslogsyslog是Linux系统中默认的日志守护进程,RHEL5上...
    99+
    2023-06-28
  • 如何分析Linux系统页缓存
    今天给大家介绍一下如何分析Linux系统页缓存。文章的内容小编觉得不错,现在给大家分享一下,觉得有需要的朋友可以了解一下,希望对大家有所帮助,下面跟着小编的思路一起来阅读吧。Linux系统中页缓存是一个相对独立的概念,其根本目的是为了加速对...
    99+
    2023-06-28
  • 如何分析linux系统内核bsp
    这期内容当中小编将会给大家带来有关如何分析linux系统内核bsp,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。BSP简介:Board Support Package顾名思义,就是板级支持包,说白了就是最...
    99+
    2023-06-28
  • Linux系统进程的示例分析
    这篇文章主要为大家展示了“Linux系统进程的示例分析”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Linux系统进程的示例分析”这篇文章吧。1. 什么是进程进程是处于执行期的程序以及...
    99+
    2023-06-13
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作