问题标签 [berkeley-sockets]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
linux - linux '500'' 上的 ftp 客户端:命令不理解。'
我尝试制作简单的 ftp 客户端来获取 bsd 套接字上的文件列表。这里是:
我在我的工作站上使用来自 debian 存储库(ftpd)的 ftp 服务器。我尝试执行此代码,当我发送密码服务器时回答 500 '':命令不理解。我使用wireshark查看会发生什么,我的程序中的所有包看起来都很好,我使用ftp命令(Linux上的轻量级ftp客户端)进行连接,它可以工作,但来自该客户端的包看起来与我自己的客户端相同。有任何想法吗?
c - 什么可能导致 getaddrinfo() 返回错误代码“1”?
或多或少是它在标题中所说的。我打电话给 getaddrinfo,如下所示:
自豪地打印:
在我的系统上。
我系统上的 getaddrinfo 手册页:
这表明 getaddrinfo 返回的所有非零代码都应该是列出的 EAI_* 系列代码之一。在线搜索表明 gai_strerror() 仅在传递一个不是EAI_* 系列成员的错误代码时才会返回“未知错误” ,这似乎排除了“1”是这样的代码。
显然我在这里做错了,所以任何帮助将不胜感激!
c - 将套接字绑定到 IPv6 地址
我正在尝试编写一个同时监听 IPv4 和 IPv6 地址的 Web 服务器。但是,我最初编写的代码不起作用。然后我发现 IPv6 结构适用于 IPv4 和 IPv6。所以现在我使用 IPv6 结构,但只有 IPv4 地址有效。这篇文章,为什么我不能将 ipv6 套接字绑定到链接本地地址,它说要添加server.sin6_scope_id = 5;
所以我这样做了,但它仍然不接受 IPv6 telnet 连接。任何帮助将不胜感激,因为我完全被难住了。
谢谢!
我的代码如下:
c++ - Berkeley Socket Send 在成功的非阻塞发送上返回 0
我正在编写一个非阻塞聊天服务器,到目前为止服务器工作正常,但我不知道如何纠正部分发送,如果它们发生。发送(int, char*, int); 函数总是在发送成功时返回 0,在发送失败时返回 -1。我读过的每个文档/手册页都说它应该返回实际馈送到网络缓冲区的字节数。我已经检查以确保我可以发送到服务器并重复接收数据而不会出现问题。
这是我用来调用发送的函数。我都尝试先将返回数据打印到控制台,然后尝试在 return ReturnValue 上换行;调试时。结果相同,ReturnValue 始终为 0 或 -1;
c - 规范名称或 IP 地址 - 套接字、linux 和 C
我怎么知道 astring
是 thecanonical name
还是 the IP address
?
因为如果argv[1]
是IP address
我做的:
如果 argv[1] 是canonical name
我做的:
另外,我必须用什么来代替XYZ
?
可能的解决方案:
c - How to notify an abnormal client termination to server?
As the Title already says im looking for a way, to get notified when a client closes his Session unnormal.
I'm using the freeBSD OS. The server is running with Xamount threads (depending on CPUcore amount). So I'm not forking, and there isn't a own process for each client.
That's why sending an deathpackage all time_t seconds, to recive a SIGPIPE isn't an option for me. But i need to remove left clients from the kqueue, because otherwise after too many accept()'s my code will obviously run into memory troubles.
Is there a way, I can check without high performance loose per client, they are connected or not?
Or any event-notification, that would trigger if this happens? Or maybe is there a way of letting a programm send any signal to a port, even in abnormal termination case, before the Client process will exite?
c++ - 具有 FIONREAD 返回值的 ioctl
这个问题与udp socket 的 FIONREAD 返回什么有关?
我尝试在 Mac 上使用下一个代码:
在每次通话numBytesRecv != 0
时,numBytesRecv == totalPending - 16
你能解释一下为什么会这样吗?这个返回值正确吗?如果是,我可以假设numBytesRecv == totalPending - 16
每个值numBytesRecv != 0
吗?
c - 使用recv从套接字接收数据不起作用
我正在尝试使用 BSD 套接字创建一个简单的代理服务器,它在端口上侦听请求,然后将该请求传递给另一台服务器,然后再将服务器的响应发送回浏览器。
我可以使用以下代码从浏览器接收 REST 请求:
但是,recv()
当连接被对等方(在本例中为浏览器)关闭时,应该返回 0,但情况并非如此。我能够检测连接是否已关闭的唯一方法是检查响应是否小于从recv()
512 字节请求的最大数量。这有时是有问题的,因为我看到的一些请求是不完整的。
如果没有更多数据要接收,则recv()
阻塞并且永不返回,并且将接受的描述符设置为非阻塞意味着读取循环将永远继续,永远不会退出。
如果我:
将侦听套接字描述符设置为非阻塞,
EAGAIN
尝试accept()
连接时出现错误(资源暂时不可用)将接受的套接字描述符设置为非阻塞,
recv()
从不返回 0 并且循环永远继续将它们都设置为非阻塞,尝试
accept()
连接时出现“错误文件描述符”错误不要将它们中的任何一个设置为非阻塞,循环永远不会退出,因为
recv()
永远不会返回。
套接字本身是按如下方式创建的,但由于它能够检测到请求,所以我看不出它的初始化有什么问题:
仅当返回 1时才调用该startListening()
函数:initSocket()
我可能在这里做了一些愚蠢的事情,但我很感激您提供有关此问题以及如何解决此问题的任何信息。
c - 通过 TCP 连接使用 Berkeley 套接字传输可变结构大小
我在 C 中定义了以下结构,我想使用 Berkeley 套接字通过Linux 中客户端和服务器之间的TCP 连接发送它:
由于我有“char *data”,它是一个指针,可用于在本地发送机器中分配可变大小的数据,我必须在两次不同的时间将此结构发送到接收方。第一次,我只发送固定变量,即前三个变量。然后在接收时,我分配一个长度大小的缓冲区来第二次接收数据部分。
所以我的问题是无论如何只能将此结构发送到另一侧,数据字段大小可变,而不是我在做什么的两倍?
非常感谢。
c - 将 IP 地址转换为文本形式时出现分段错误
我正在尝试将连接到我的服务器的任何客户端的 IP 地址转换为文本形式,如下所示:
当我运行前面的代码时,我得到分段错误(核心转储)。
我还用以下内容替换了最后一行,但我得到了同样的错误:
所以有什么问题?