【在linux上,当使用C执行与端口0(选择随机端口)的套接字绑定时,我得到错误98,地址已在使用中.怎么可能?】教程文章相关的互联网学习教程文章

linux – 套接字失败与EOF和连接重置之间的区别

为了测试网络应用程序,我编写了一个asio端口“proxy”:它在套接字上侦听应用程序客户端活动,并将所有传入的数据包发送到应用程序服务器监听的另一个套接字,然后返回. 现在,当应用程序或服务器因各种原因断开连接时,“代理”通常会获得EOF,但有时会收到“连接重置”. 因此,问题是:套接字何时因“连接重置”错误而失败?解决方法:当本端尝试向远端发送数据并且远程端使用设置了RST标志(而不是ACK)的数据包应答时,TCP连接被“重置”...

Linux可以使用哪些值作为默认的unix套接字缓冲区大小?【代码】

Linux记录了tcp的默认缓冲区大小,但没有记录AF_UNIX(“本地”)套接字的默认缓冲区大小.可以在运行时读取(或写入)该值.cat /proc/sys/net/core/[rw]mem_default这个值是否总是在不同的Linux内核中设置相同,或者它可能是一系列可能的值?解决方法:默认值不可配置,但在32位和64位Linux之间有所不同.该值似乎是为了允许256个256字节的数据包,占每个数据包开销的不同(使用32位v.s.64位指针或整数的结构). 在64位Linux 4.14.18:212992字...

linux – 无法看到Wireshark看到的应用程序套接字上的数据包【代码】

使用Ubuntu 14 我有一台Linux机器,有两个接口:eth1:172.16.20.1ppp0:192.168.0.2 ppp0连接到具有PPP接口(192.168.0.1)和WAN接口(172.16.20.2)的设备.我可以验证此设备是否可以达到172.16.20.1 我遇到的问题是,如果我在同一台机器上使用Python发送数据包: client.pyimport socket cl = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) cl.sendto("Hello", ("172.16.20.1", 5005))server.pyimport socket srv = socket.socket...

Linux何时/如何决定在应用程序kill时关闭套接字?

我有一个服务器进程和一个在同一台Linux机器上运行的客户端进程. 有时当我杀死-9客户端时,我看到tcpdump发送了FIN,ACK消息.当然死去的客户不可能做到这一点,因为他与SIGKILL残酷地死了.所以我猜Linux操作系统处理连接关闭. 有时我看不到任何连接 – 关闭处理,连接保持“ESTABLISHED”(由netstat). 我总是看到在Linux ubuntu 4.4.0-53-generic中关闭了一个连接.有时我在Linux 3.13.11(纯内核,而不是Ubuntu)中看到连接被关闭. 我的问...

linux – splice()/ tee()可以使用套接字,而不仅仅是管道吗?

在Linux上,系统调用splice(2)和tee(2)用于在两个文件描述符之间传输数据.根据文档,一个或两个文件描述符必须是管道.为什么?这可以用于套接字吗?它目前是否有效,或者是否需要进行内核修改?解决方法:现在他们只是将管道缓冲器拼接在一起;套接字缓冲区(在Linux上)是不同的动物,并将内核网络拖入其中.将其限制为AF_LOCAL套接字将以复杂验证为代价简化实现 – 您仍然可能必须处理它们通过网络缓冲区管理子系统而不是匿名文件缓冲区进...

linux – 如何列出对远程计算机开放的所有套接字?

一个vanilla ss -l列出(在我当前的机器上)许多开放套接字,有各种Netid类型,其中许多只是在localhost上侦听. 如何获得所有且仅有那些远程机器可以通过其与机器交换数据的套接字的列表? >这将包括TCP,UDP,任何其他传输层协议,RAW套接字,以及我可能不知道的任何其他协议. (在这个意义上,ss是完整的吗?)>我相信这会排除UNIX套接字(它们仅在本地文件系统上,对吧?或者UNIX套接字可以远程操作,它们应该被包含在内).>可以忽略Localhost限...

linux – 什么是通用套接字,它与网络设备有什么关系?

我试图了解网络驱动程序在Linux下的工作原理. This Q&A显示Linux中的网络设备未由设备文件表示.它声明网络驱动程序使用套接字. 例如,this引用了如何通过ioctl调用设置网络设备. ioctl但是needs a file descriptor,鉴于网络驱动程序没有设备文件,唯一可以传递的文件描述符是套接字中的文件描述符. 这让我想到了问题.到目前为止,似乎网络接口,它将是物理网卡的软件表示,实际上是套接字的劣等对象. >但是这个抽象意义上的套接字是什么...

linux – 从套接字读取失败:通过对等方重置连接

当我第一次尝试通过ssh连接我的新ubuntu时,我遇到了这个异常.我试图从谷歌搜索,但直到现在没有运气.以前是否有人遇到过同样的问题?解决方法:sshd服务器是否正在运行?设置为接受非本地连接(检查/ etc / sshd / sshd_config)?你有本地防火墙(iptables)阻止吗?如果您尝试通过某种类型的路由器,路由器是否有阻止它的防火墙? 默认情况下,OpenSSH服务器登录到syslog的AUTH工具,ssh登录尝试的所有详细信息都将保存在/var/log/auth.lo...

Linux 套接字编程中的 5 个隐患

原文链接:http://www.cnblogs.com/hnrainll/archive/2011/10/14/2211161.html转自:http://www.ibm.com/developerworks/cn/linux/l-sockpit/ 在 4.2 BSD UNIX 操作系统中首次引入,Sockets API 现在是任何操作系统的标准特性。事实上,很难找到一种不支持 Sockets API 的现代语言。该 API 相当简单,但新的开发人员仍然会遇到一些常见的隐患。本文识别那些隐患并向您显示如何避开它们。隐患 1.忽略返回状态第一个隐患很明显,但它...

linux – 如何丢弃原始套接字中的传入数据包?

我正在Linux下编写一个C/C++应用程序,它从原始套接字读取数据(用于ICMP数据包).问题:有没有办法丢弃仍然在套接字上排队的所有数据? 问题是睡了一会儿之后,插座上排队的数据我不感兴趣;所以最好只告诉套接字“忘记你现在缓冲的所有数据”,这样如果我进入select()/ recvfrom()循环,那么我只得到最近收到的数据. 有没有比先进入单独的poll()/ recvfrom()循环更好的方法?有些socket API调用可能吗?便携式,甚至?

多端口监听套接字linux

我正在编写一个多线程服务器应用程序,在C(linux)中,它必须侦听2个不同的端口号,比如侦听端口号3000和4000,用于连接到它的不同客户端以提供不同的功能(实际功能由工作人员执行)线程,主线程无限期运行,并在新连接时产生新工作者).我不确定select是否可以在这里工作,因为我们可以有多个套接字连接,但都与相同的端口号相关联.我尝试顺序绑定到sock_1和sock_2.当我运行client_1时,一切都按预期工作.但是,当我运行client_2时,我在客户端的...

如何在Linux中重新绑定udp套接字【代码】

我是一位经验丰富的Linux套接字程序员,正在编写一个具有许多传出接口的服务器应用程序.现在,服务器套接字与INADDR_ANY一起绑定到进程开始时的随机源端口. 稍后在某个时候提交对特定节点的响应时,我需要分配一个固定的源IP地址.执行此操作的标准方法是调用bind.但是,对于端口号调用bind一次,连续调用失败并出现无效参数错误. 创建一个新的套接字并不是一个好的选择,因为我必须经常在响应某些客户端时这样做. 我还研究了SO和很多套接...

c – 从套接字获取地址族. Linux的

我想为Linux Socket API编写一个C包装器.在socket()ctor中请求地址族(AF).我不想再次在connect()签名中要求AF,因为它已经在socket的构造函数中给出了.那么如何从现有插座中获取AF?解决方法:该死的.搜索了大约半个小时.在发布这个问题后,我立即找到了答案. getsockopt([…])选项SO_DOMAIN(见socket options)

PHP套接字错误Linux上的权限被拒绝【代码】

我在Linux 2.6.34上安装了php 5.4.13. 我使用套接字创建简单的客户端/服务器页面,但它不起作用. 它给予权限拒绝错误 下面是我的PHP代码if (false == ($socket = socket_create(AF_INET, SOCK_STREAM, 0))) // create socket {$stringData= date("D M d, Y g:i A"). " socket_create() failed: reason: " . socket_strerror(socket_last_error()) . "<br>";echo $stringData; } else {$timeout = array('sec'=>5,'usec'=>500000);...

在Linux中创建套接字时获取错误代码【代码】

我正在Linux中进行一些套接字编程,我想知道如何在函数套接字(…)时获取错误代码;失败. 例如,对于“getaddrinfo”函数,我可以这样做://Resolve the server address and portresult = (struct addrinfo *) calloc(1, sizeof(struct addrinfo));iResult = getaddrinfo("google.com", DEFAULT_PORT, &hints, &result);if (iResult != 0){printf("%d\n", iResult);fprintf(stderr, "getaddrinfo failed: %s\n", gai_strerror(iResult))...