Articles of 发送

Linux:在TCP套接字上发送整个消息或不发送消息

我发送各种自定义消息结构下非阻塞TCP套接字。 我想在一个send()调用中发送整个结构,或者如果发送缓冲区中只有部分消息(即send()返回EWOULDBLOCK),则返回一个没有发送字节的错误。 如果没有足够的空间,我会扔掉整个结构并报告溢出,但是我想在这之后可以恢复,也就是说接收者只能接收到一系列有效的完整结构。 有没有办法检查发送缓冲区的可用空间,或者告诉send()调用如上所述? 基于数据报的套接字不是一个选项,必须是基于连接的TCP。 谢谢。

C套接字,文件后发送消息,TCP

我想通过套接字发送文件,然后我想发送三条消息。 下面的代码工作,但我必须发送第一句话两次。 我的问题是为什么? 没有一个句子1,接收者显示句子2,句子3和句子3。 这段代码有什么问题? 我使用的是TCP协议。 Sender.c char file_size[256]; struct stat file_stat; int sent_bytes = 0; int fd; int offset; int remain_data; fd = open(FILE_TO_SEND, O_RDONLY); if (fd == -1) { fprintf(stderr, "Error opening file –> %s", strerror(errno)); exit(EXIT_FAILURE); } /* Get file stats */ if (fstat(fd, &file_stat) < 0) { fprintf(stderr, "Error fstat –> […]

EAGAIN是否会返回缓冲区已满以外的任何内容?

如果我在Linux中的非阻塞tcp套接字上使用send(),它将返回EAGAIN用于发送缓冲区满状态以外的其他任何东西? 我基本上需要决定是否要使用套接字发送缓冲区作为我的应用程序的唯一缓冲区,或者如果我需要我自己的用户空间缓冲区来提供套接字缓冲区。

通过单个发送呼叫发送合理的数据量

我需要通过TCP套接字发送不同大小的文件到其他客户端。 现在我想知道一个发送函数调用有多less数据是合理的? 例如,我不会发送一个2兆字节的图片和一个调用发送 – 我将把这个文件切分成更小的缓冲区,然后一个接一个地发送。 但是这些缓冲区应该有多大或多小? 我知道发送并不保证发送所有的数据 – 我会检查。

C ++:如何测量非阻塞套接字的实际上传速率

我正在使用非阻塞套接字与epoll在Linux C ++编写一个程序,等待EPOLLOUT为了做一些数据发送()。 我的问题是:我读过非阻塞模式的数据复制到内核的缓冲区,因此一个send()调用可能会立即返回,表明所有的数据已发送,实际上它只被复制到内核的缓冲区。 如何知道数据实际发送和接收的时间,以了解真正的传输速率?

在Unix上使用套接字发送和接收文件(服务器/客户端)

首先,谢谢大家的阅读和帮助,我非常感谢。 第二我很抱歉,但我仍然是新来这个网站和英文不是我的母语,所以我可以做一些格式和语言错误。 我提前道歉。 另外,我的C知识不是很好,但我愿意学习和提高。 现在,关于这个问题: 我需要做的是创build一个客户端和服务器,并让服务器侦听传入的连接。 然后我有客户端发送一个相当大的文本文件(我知道它只会是一个文件)到服务器。 然后,服务器将对文件执行一些操作(它将在发送的文件上运行一个脚本,在输出中生成另一个名为“output.txt”的文件)。 服务器然后将需要发送output.txt文件回到客户端。 现在,我已经有了如何做一个客户端和服务器(我读这个网站上的beej指南和一些其他的东西),即使我可能犯了一些错误。 我需要服务器收集文件的一些帮助,然后调用脚本并将其他文件发送回客户端。 现在我所做的是服务器和客户端…我不知道如何继续下去。 在附注中,我使用我在本网站和互联网上发现的文件制作了这些文件,我希望它们不是太乱,因为我不是一个程序员。 这是client.c #include <stdio.h> #include <stdlib.h> #include <unistd.h> #include <string.h> #include <sys/types.h> #include <sys/socket.h> #include <netinet/in.h> #include <netdb.h> #include <pthread.h> #define SOCKET_PORT "50000" #define SOCKET_ADR "localhost" #define filename "/home/aryan/Desktop/input.txt" void error(const char *msg) { perror(msg); exit(0); } int main() { /* Making the […]

我使用tcp进行很多小的发送,我应该closuresNaglesalgorithm吗? (人们也知道这是TCP_NODELAY)

我重拍这篇文章,因为我的标题select是可怕的,对此感到遗憾。 我的新post可以在这里find: 发送很多后,我的send()调用导致我的程序完全停顿。 这怎么可能? 非常感谢大家。 问题是,客户实际上是机器人,他们从来没有从连接读取。 (感觉愚蠢)

接收套接字的命令

我正在使用套接字将数据从本地机器发送到远程TCP,stream模式。 本地代码是: // ———– Local send(sd, pData, iSize, 0); // send data 数据的大小约为1Mb,因此套接字可能会将其分成几个数据包。 当我在远程接收数据时,我必须单独收集数据,然后将它们组合在一起。 远程端的代码是: // ———– Remote : Receiving data int iSizeThis(0);// size of a single separated data static int iSizeAcc(0);//size of the total data I have already got. static int iDataSize(0);// size of the original data. // Get size if (iDataSize <= 0) […]

Node.js中的Websocket连接在发送时closures

我尝试了许多不同的npmnetworking套接字库(WebSocket,ws,express-ws等等),并且在他们的每个人中我都有同样的问题。 当我尝试发送websocket消息时,连接closures。 我没有问题接收messeges,只发送。 下面是一个使用express和ws库进行testing的简单示例:Node.JS side: var server = require('http').createServer() , url = require('url') , WebSocketServer = require('ws').Server , wss = new WebSocketServer({ server: server }) , express = require('express') , app = express() , port = 8080 , fs = require('fs'); app.use(function (req, res) { var index = fs.readFileSync('./interface/index.html'); res.end(index); }); wss.on('connection', function connection(ws) { […]

C ++套接字的send()会导致系统错误10053

我试图从我的客户端发送消息到我的服务器(目前他们都在同一个进程中运行,但我不认为这很重要)。 连接build立良好(我可以看到它与“CurrPorts” – 比TcpView更友好的用户界面)。 但是,当我发送消息时,我得到错误: “build立的连接被主机中的软件中止。” (编号10053) 然后连接中断… 这里是相关的代码: bool Client::Send(void* msg, int size) { int sockId = m_socket.GetId(); struct sockaddr_in remote = m_socket.GetRemotePoint().GetBasePoint(); const char* buf = (const char*)msg; int error = send(sockId, buf, size, 0); //int g = GetLastError(); //if (g != 0) //{ // g = g; //} return (error != -1); […]