【linux – 在本地主机上使用相同的IP和端口创建套接字】教程文章相关的互联网学习教程文章

socket - Linux 套接字

总览 #include <sys/socket.h> mysocket = socket(int socket_family, int socket_type, int protocol); 描述本手册页介绍了 Linux 套接字的用户接口. 这个 BSD 兼容套接字是介于用户进程与内核网络协议栈之间的统一接口, 各协议模块属于不同的 协议族 ,如 PF_INET, PF_IPX, PF_PACKET 和 套接字类型 ,如 字节流(SOCK_STREAM) 或 数据报(SOCK_DGRAM). 关于协议族和套接字类型请参考 socket(2). 套接层函数用户通过这些...

Linux上C/C++中的简单原始套接字服务器

我正在尝试使用原始套接字构建以太网网络.我不能使用TCP / IP,UDP或任何其他协议. 这是因为它将与非常简单的硬件进行通信,这些硬件将没有资源来处理所有不同的协议层.我的网络将由1台主机通过以太网交换机与多个硬件进行通信.在这一点上,我基本上只想向每个硬件发送简单的数据包,并建立一个我可以扩展的简单服务器.我的系统运行Linux,服务器需要用C或C编写. 我一直试图找到有关如何使用原始套接字的信息,但每个人总是说不使用它们并...

linux – 套接字接收队列中有多少个数据包或字节?

使用SO_RCVBUF调用getsockopt将返回已分配的套接字接收缓冲区大小. 我很想知道在调用recv或recvfrom之前是否可以查询缓冲区中实际有多少数据报包(或字节)?如果它有帮助,我可以满足于Linux特定的答案.有问题的套接字是UDP,但我怀疑它对TCP无关紧要. 我问的原因仅仅是测试和调试目的.我正在尝试验证我对setsocktop(SO_RCVBUF)的调用是否设置了足够的大小.知道接收缓冲区是否接近其极限将验证是否设置了足够的大小.解决方法:在Window...

在linux中的同一个套接字上接收来自不同组的组播数据

假设我想在Linux C程序中从239.1.2.3:20000以及239.4.5.6:20001接收数据.我可以只用一个插座吗? 我当然可以使用IP_ADD_MEMBERSHIP setsockopt选项在套接字上连接多个组,但是,由于端口不同,我不确定是否可能以某种方式“绑定到两个端口”解决方法:不,你不能将套接字绑定到2个端口,每个端口需要一个套接字.

强制套接字断开而不伪造RST,Linux【代码】

我有一个网络客户端,它停留在不受我控制的服务器上,24小时后可能永远不会响应.该程序处理了大量数据,所以我不想杀死它;我希望它放弃当前的连接并继续. (如果recvfrom返回EOF或-1,它将正确执行.)我已经尝试了几个不同的程序,声称能够通过伪造RST来断开过时的TCP通道(tcpkill,cutter,killcx);没有任何影响,该计划仍然停留在recvfrom.我也尝试过关闭网络接口;再一次,没有效果. 在我看来,确实应该有一种方法来强制断开套接字API级别而不...

linux – 在创建管道,fifo或套接字时创建inode

我对Linux有一般性的疑问.如果我创建一个fifo,是否会创建inode?管?插座?解决方法:不会为匿名管道或套接字创建inode,因为inode是文件系统的属性,并且这两者都不是文件系统实体(它们没有文件路径).它们只有文件描述符. 但是,对于命名管道(也称为fifo),创建一个inode作为文件系统实体.

Linux TCP套接字崩溃【代码】

我编写通过Linux TCP套接字进行通信的网络应用程序.最近我注意到发送系统调用崩溃我的应用程序.当两个对手都启动时,它工作正常(我现在正在测试崩溃恢复).但是当一个对等体出现故障时,第二次崩溃会执行这段代码.fprintf(stderr, "out_tcp %d\n", out_tcp);if(send(out_tcp, &packet, sizeof(packet), 0) == -1) fprintf(stderr, "send TCP error");fprintf(stderr, "after send");Socket已准备好并已连接,并且在第二个对等体出现故障...

c – 是否可以使用TCP / IP套接字绑定和侦听一个IP地址? (Linux的/ C)【代码】

我一直用:serv_addr.sin_addr.s_addr = htonl(INADDR_ANY);这意味着我将接受来自任何界面的连接.如果我用“192.168.0.1”替换INADDR_ANY.这是否意味着我只接受来自IP地址192.168.0.1的连接,或者它是否意味着我将接受来自192.168.0.1接口的连接? 我现在有一个情况,我有多个客户端(每个客户端都有一个唯一的IP地址但相同的端口号),尝试连接到一个服务器.我可以拥有多个侦听功能(单独的线程)来侦听唯一的IP地址和端口吗?或者我必须...

linux – 磁盘上的unix套接字文件和ubuntu上的tmpfs

如果将unix套接字文件放在磁盘而不是tmpfs / ramdisk(ubuntu)上,速度是否有差异(无论多么微小)?解决方法:只在开放时间.该文件实际上从未获得任何内容;通过它发送的内容只通过内存.文件系统仅用于提供系统范围的名称.

Bash:连接到Linux抽象UNIX套接字

我有abstract Linux socket听取连接. 抽象的Linux套接字基本上是一个名为AF_UNIX的套接字 – 除了名称不引用文件系统上的文件.相反,名称只是位于内核中抽象套接字命名空间内的唯一名称. 我的问题:有没有办法只使用Bash shell连接到抽象套接字?我从this question开始就知道你可以使用socat或netcat连接到与文件系统上的文件相关联的普通命名的AF_UNIX套接字.但是当我尝试使用抽象套接字时,它不起作用(它将我的名字字符串视为文件,...

linux – 如何通过套接字将`eof`信号发送到远程shell中运行的命令?

How to send eof signal, over a socket, to a command running in remote shell?我用Python编程,使用套接字,一个远程shell应用程序,在那里我发送命令在另一台PC上执行. 一切正常(对于大多数命令),除了像cat>这样的命令.文件导致我的问题. 通常,我会用CTRL D(eof信号)终止上面的命令,但在我的客户端按CTRL D,不会将信号发送到远程shell.因此,我无法终止命令而且我被困住了. 有人有建议吗?解决方法:当你输入ctrl-d时,eof不是一个信...

c – Linux服务器,将文件发送到Windows客户端(套接字)【代码】

当我将文件发送到客户端时,它会被破坏,并且大小以字节为单位. 我有一个在Windows上运行的这个服务器的版本并且工作正常,但我在Linux上的结果并不相同. 磁盘上的文件大小可能是将大小以字节为单位发送到另一个平台上运行的客户端的错误? 客户端工作正常,正如我所说我在Windows上运行此服务器的版本,唯一的区别在于fread:size = fread(mfcc,1,min(sizeof(mfcc),FileSize),fp); fread功能正在正确使用? 专家可以分析并帮助找到错误...

linux – BASH脚本启动node.js套接字服务器作为服务【代码】

基本上我想要完成的是,某种脚本或方法让我启动node.js套接字服务器脚本,作为服务. 这样做是为了让我不必在SSH中物理运行’node server.js’并且必须打开它. 任何帮助,将不胜感激. 谢谢斯科特解决方法:除了永远之外,我没有看到任何想要使用其他东西的罪犯.在我的项目中,我也避免使用这种工具,而更多地依赖于系统功能.因为我也试图避免以root身份运行我的应用程序,所以我不能使用SystemV或Upstart. 这里有强大的shell脚本!我创建了几...

在Linux上使用UDP套接字的SO_REUSEADDR.有必要吗?

我的UDP套接字是bind()到端口53(DNS). UDP是否具有TIME_WAIT状态或在UDP套接字上使用SO_REUSEADDR无意义?解决方法:UDP没有连接,因此没有什么类似于TIME_WAIT.您不需要使用SO_REUSEADDR. 如果您正在侦听广播或多播地址,则可能需要使用SO_REUSEPORT,这样如果同一台计算机上有多个侦听器,则不会发生冲突.但是,据我所知,这在Linux上并不存在.

linux – 在本地主机上使用相同的IP和端口创建套接字【代码】

我在Linux上看到了奇怪的行为,我看到远程端和本地端都显示相同的IP和端口组合.以下是netstat输出 netstat -anp | grep 6102 tcp 0 0 139.185.44.123:61020 0.0.0.0:* LISTEN 3361 / a.outtcp 0 0 139.185.44.123:61021 139.185.44.123:61021 ESTABLISHED 3361 / a.out 任何人都可以告诉我,这是否可能?如果是,那么可能是什么情景?解决方法:连接由4元组((源IP,源端口),(目标IP,目标端口))标识,源端口和目标端口可以相同而没有任何问...