Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >如何检查模块或类是否是网络接口、套接字?

如何检查模块或类是否是网络接口、套接字?
EN

Software Engineering用户
提问于 2020-05-24 04:52:47
回答 1查看 40关注 0票数 -1

背景

简化一下,假设我想编写一些代码分析工具,它告诉我哪些文件--类/模块--是/有某种网络接口(S)。不管是REST控制器、DB连接、RPC还是简单的套接字。

限制

我想自动完成这个任务。我这么说是什么意思?我不想使用任何regex的东西来搜索特定于网络的关键字,比如GET、POST、其他http操作、URL、IP地址和其他与某些协议相关的内容。我想要获得if类使用一些套接字操作下的遮罩。即使它的应用程序建立在http框架上,而且所有的网络操作都隐藏在更深的依赖性中。

示例

我们有一些REST控制器,它监听特定的URL。如果使用HTTP框架,则可能会将控制器注入到其他类的依赖项中,将该类注入到其他类中,最后在底层网络接口上使用网络套接字进行监听。我假设每个编程环境都有一些原子套接字抽象,或者说是由每个网络接口使用的一对这样的抽象。

问题

我如何才能适当地满足这些要求?目标是指出系统的网络输入和输出所在的位置。我是否可以使用仅用一种编程语言编写的工具来实现这一目标,还是必须编写每种技术的单个工具?

PS。Post一般与语言无关,但是在java或python中的一些例子会有帮助。

EN

回答 1

Software Engineering用户

发布于 2020-05-24 05:51:23

这是不可能的。

以PHP为例。如果我使用mod_php模块在Apache上运行这个PHP,就会有一个从应用程序代码直接链接到Apache中的套接字处理代码的路径。

如果我使用CGI在Apache上运行完全相同的PHP webapp,那么webapp将在一个单独的进程中运行。

唯一的区别是Apache配置文件中的一行。

从webapp的源代码中无法确定,因为在这两种情况下,源代码都是完全相同的。(正如PHP解释器的源代码和Apache的源代码一样。)

您不能通过对源代码的分析来确定这一点,因为它是环境的属性,而不是源代码。

因为静态分析是运行时环境的属性,所以不能用静态分析来确定这一点。

票数 0
EN
页面原文内容由Software Engineering提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://softwareengineering.stackexchange.com/questions/410542

复制
相关文章
IPC|网络套接字
为了访问由UDP提供的服务,你需要像以前一样使用套接字和close系统调用,但你需要用两个
heidsoft
2022/04/18
1.1K0
linux 网络套接字
在内核分析网络分组时,底层协议的数据将传输到跟高的层。而发送数据的时候顺序是相反的。每一层都是通过加(首部+净荷)传向跟底层,直至最终发送。
233333
2019/05/25
2.8K0
什么是socket套接字?
互联网已经深入我们生活的方方面面,重要性不言而喻。上世纪70年代互联网刚发明的时候,就确定了客户端-服务器模型,这个编程模型一直沿用到现在都没有变过,我们在电脑上打开一个网站,在微信上聊天,打开一个app本质上都是客户端和服务器的连接和交互。
zhanyd
2022/05/16
5860
什么是socket套接字?
PHP检查对象或类中是否存在属性
$obj = \app\common\library\Email::instance(); $obj->p=889; if(isset($obj->p)){ echo 66; }else{ echo 99; } die; isset既可以判断对象的属性是否存在,也可以判断数组的键名是否存在 未经允许不得转载:肥猫博客 » PHP检查对象或类中是否存在属性
超级小可爱
2023/02/20
4.2K0
Linux网络套接字(二)
单进程版本没有人会去使用,因为这种版本只能是一对一的连接,很明显不能符合业务要求的,就好比我们打开一个学习软件去学习,同学A先打开了,那么同学B、C和更多的其他同学都不能打开了。这里我们借助单进程版本来学习。
二肥是只大懒蓝猫
2023/04/27
2K0
Linux网络套接字(二)
网络编程套接字(一)
IP地址(公网IP)是用来唯一标识互联网中的一台主机,一台主机一个IP。而IP分源IP和目的IP,源IP和目的IP对一个报文来讲,是起从哪里来,到哪里去的作用,其最大的意义是指导报文该如何进行路径的选择,而路径中,每一个“站点”就是MAC地址的变化。
二肥是只大懒蓝猫
2023/04/09
7500
网络编程套接字(一)
Java网络编程--套接字Socket
一、套接字Socket IP地址标志Internet上的计算机,端口号标志正在计算机上运行的进程(程序)。 端口号被规定为一个16位的0--65535之间的整数,其中,0--1023被预先定义的服务通信占用。 当两个程序需要通信时,可以通过Socket类建立套接字对象并连接在一起。(端口号与IP地址的组合得出的一个网络套接字) 二、示例 (1)客户端服务器端一对一;聊天 1 package mychat; 2 3 import java.io.BufferedReader; 4 import ja
听着music睡
2018/05/18
1.6K0
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、源IP地址和目的IP地址 在数据传输时各网络协议栈会对数据进行报头封装,而在IP数据包头部中, 有两个IP
用户9645905
2022/11/15
1.5K0
Linux网络-套接字编程基础
Linux网络-TCP/UDP套接字编程
注:由于UDP不是面向连接的,所以传输数据时需要指明对端网络相关的信息,即sendto的最后两个参数用来表示对端的信息
用户9645905
2022/11/15
3.7K0
Linux网络-TCP/UDP套接字编程
【Linux】网络基础+UDP网络套接字编程
1. 首先计算机是人类设计出来提高生产力的工具,而人类的文明绵延至今一定离不开人类之间互相的协作,既然人类需要协作以完成更为复杂的工作和难题,所以计算机作为人类的工具自然也一定需要协作,而计算机之间的协作其实说白了就是网络通信,也就是各个主机之间的数据互通。 所以我们可以得出来结论,计算机网络的出现是必然的。 而刚开始的计算机之间确确实实是各自相互独立的,他们想要进行通信那就只能人为的拷贝数据到U盘,然后把U盘插到另一个主机上,让另一个主机来进行网络通信,只要是人参与的工作他一定是效率低的,所以为了避免这种效率低下的通信方式,第一版本的通信方案搞出来了服务器,即为多个主机之间通过一台服务器进行网络通信,每个主机可以将自己的数据发送到服务器上,其他主机想要拿到数据,则可以直接从服务器里面读取数据。
举杯邀明月
2023/10/17
4010
【Linux】网络基础+UDP网络套接字编程
套接字
版权声明:本文为博主原创文章,转载请注明博客地址: https://blog.csdn.net/zy010101/article/details/88673990
zy010101
2019/05/25
1.3K0
网络套接字、网络字节序、sockaddr结构
Socket本身有“插座”的意思,在Linux环境下,用于表示进程间网络通信的特殊文件类型。本质为内核借助缓冲区形成的伪文件。
mindtechnist
2025/02/12
860
网络套接字、网络字节序、sockaddr结构
Linux:网络编程套接字及UDP
        而要使用软件进行通信,就得先把这个软件启动起来,也就是进程,所以网络通信的本质就是进程间通信!!只不过是不同主机下的进程!!
小陈在拼命
2025/02/11
1170
Linux:网络编程套接字及UDP
JavaScript 检查是否是数字
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/109551.html原文链接:https://javaforall.cn
全栈程序员站长
2022/07/05
1.1K0
js检查是否是数组
该方法兼容Chrome 5, Firefox 4.0, IE 9, Opera 10.5 和 Safari 5,详细兼容性,可以查阅这篇文章。
IT工作者
2022/01/27
3.4K0
如何检查Python下的各种模块是否安装好
在终端安装完后一个模块后基本都会输出“Successfully installed xxx”之类的文本来告知用户安装成功,如果还不放心,可以输入python进入python代码使用两种方式来确定是否安装成功。
Cloudox
2021/11/23
2.2K0
如何检查Python下的各种模块是否安装好
Windows 网络通信套接字技术
TCP/IP协议实际上就是在物理网上的一组完整的网络协议。其中TCP是提供传输 层服务,而IP则是提供网络层服务。TCP/IP协议包括如下协议,其结构如图所示。
全栈程序员站长
2022/09/23
7920
Windows 网络通信套接字技术
socket:Python网络通信套接字
socket库提供了一个底层C API,可以使用BSD套接字接口实现网络通信。它包括socket类,用于处理具体的数据通道,还包括用来完成网络相关任务的函数,如将一个服务器名转换为一个地址以及格式化数据以便在网络上发送。
luckpunk
2023/09/29
2520
socket:Python网络通信套接字
【网络】socket套接字基础知识
每台主机都有自己的IP地址,所以当数据从一台主机传输到另一台主机就需要IP地址。报头中就会包含源IP和目的IP
平凡的人1
2023/10/15
3270
【网络】socket套接字基础知识
unix网络编程——TCP套接字编程
  TCP客户端和服务端所需的基本套接字。服务器先启动,之后的某个时刻客户端启动并试图连接到服务器。之后客户端向服务器发送请求,服务器处理请求,并给客户端一个响应。该过程一直持续下去,直到客户端关闭,给服务端发送EOF(文件结束),服务器也关闭连接的服务器端,然后结束运行或者等待新的客户发起连接请求
Mister24
2018/09/19
1.2K0
unix网络编程——TCP套接字编程

相似问题

为什么声明类的关键字是“接口”

10

网络套接字是我问题的最佳解决方案吗?

10

什么是网络模块?

10

python使用什么接口来实现套接字?

20

所有套接字是否按照伯克利套接字规范实现?

10
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文