草庐IT

MPI_Recv

全部标签

c++ - 如何使用 recv() 在 C++ 套接字中接收超过 65000 个字节

我正在使用C++在Linux中开发客户端服务器应用程序(TCP)。我想同时发送超过65,000个字节。在TCP中,最大数据包大小仅为65,535字节。我怎样才能不丢失地发送整个字节?以下是我在服务器端的代码。//Receivethemessagefromclientsocketif((iByteCount=recv(GetSocketId(),buffer,MAXRECV,MSG_WAITALL))>0){printf("\nReceivedbytes%d\n",iByteCount);SetReceivedMessage(buffer);returnLS_RESULT_OK;}如果我

c - recv() 接收部分消息的套接字编程问题

我有一个正在接收流式股票报价数据的套接字。但是,我似乎收到了很多截断的消息,或者看起来像是截断的消息。这是我接收数据的方式:if((numbytes=recv(sockfd,buf,MAXDATASIZE-1,0))==-1){perror("recv()");exit(1);}else{buf[numbytes]='\0';//Processdata}recv()能否仅接收已发送内容的部分消息?我的感觉是我可能需要围绕接收的recv()调用进行另一个循环,直到发送完整的消息。我知道我有一个libcurl实现(我认为不可能在这里使用libcurl)有一个外循环://Readtheres

c++ - 尽管 KEEPALIVE,TCP、recv 函数仍挂起

TCPkeepalive(超时时间短)是否会阻止客户端在服务器死机后卡在recv上?场景:服务器和客户端运行在不同的机器上:客户端使用KEEPALIVE选项通过TCP连接到服务器客户端发送“Helloserver”并等待响应服务器收到“Helloserver”并响应“Helloclient”客户端收到响应,休眠10秒并重复步骤2-4(现在跳过步骤1-保留连接)在客户端休眠期间,服务器被关闭,现在:客户醒来发送“Helloserver”并等待响应20分钟后recv放弃-我原以为KEEPALIVE会在45秒后中断recv功能:设置KEEPALIVE选项:voidTCPclient::set

c - MPI_Finalize() 没有完成

#include#include#includeintmain(intargc,char*argv[]){inti,done=0,n;doublePI25DT=3.141592653589793238462643;doublepi,tmp,h,sum,x;intnumprocs,rank;MPI_Statusstatus;MPI_Init(&argc,&argv);MPI_Comm_size(MPI_COMM_WORLD,&numprocs);MPI_Comm_rank(MPI_COMM_WORLD,&rank);if(numprocs1\n",numprocs);else{while

c++ - recv 有时接收不到全部数据

我有以下问题:这是代码块:voidget_all_buf(intsock,std::string&inStr){intn=1;charc;chartemp[1024*1024];bzero(temp,sizeof(temp));n=recv(sock,temp,sizeof(temp),0);inStr=temp;};但有时recv不返回整个数据(数据长度总是小于sizeof(temp)),只返回它的一部分。写端总是向我发送完整数据(我用嗅探器得到它)。有什么关系?谢谢。P.S.我知道,礼貌建议我查看n(if(n),但现在没关系-这不是我的问题的原因。P.S.2我忘了-它会阻塞套接字。

c++ - 为什么在调用recv系统调用时会调用sigprocmask?

我有一些定期调用recv()的代码(带有MSG_DONTWAIT标志)。我很好奇,因为在vtune中分析我的代码时,我看到一个与recv()关联的sigprocmask()调用,它占用了总时间的很大一部分执行。我很好奇为什么recv()调用sigprocmask()。 最佳答案 在linux下使用TCP套接字时,如果另一端意外关闭,您将收到SIGPIPE。因为你可以屏蔽这个信号(大多数时候,你会自己处理返回值0,你不关心这个信号),我猜测系统库检查信号状态,如果被屏蔽,则使用更快的代码路径。如果不是,则无法优化。顺便说一句,你知道p

c - 给定任何 epoll TCP 套接字事件,如果 EPOLLRDHUP=0 且 EPOLLIN=1;后续调用 read()/recv() 是否保证返回不等于 0 的读取大小?

摘自epoll_ctl的手册:EPOLLRDHUP(sinceLinux2.6.17)Streamsocketpeerclosedconnection,orshutdownwritinghalfofconnection.(ThisflagisespeciallyusefulforwritingsimplecodetodetectpeershutdownwhenusingEdgeTriggeredmonitoring.)来自recv的手册:Ifnomessagesareavailabletobereceivedandthepeerhasperformedanorderlyshutdown

python - 通过 Python 在 MPI_Init 中启动 Open MPI 时出错

我正在尝试通过python使用OpenMPI访问共享库,但由于某种原因,我收到以下错误消息:[Geo00433:01196]mca:base:component_find:unabletoopen/usr/li/openmpi/lib/openmpi/mca_paffinity_hwloc:perhapsamissingsymbol,orcompiledforadifferentversionofOpenMPI?(ignored)[Geo00433:01196]mca:base:component_find:unabletoopen/usr/lib/openmpi/lib/openmp

linux - Arduino在Fedora上传错误 "stk500_recv(): programmer is not responding"

我正在尝试使用FedoraCore15Linux中的ArduinoIDE上传库存Blink草图。我收到此错误:avrdude:stk500_recv():programmerisnotresponding重现问题:通过USB线插入ArduinoUno开发板打开ArduinoIDE菜单文件→示例→1.基础知识→Blink菜单工具→串行端口→然后选中/dev/ttyACM0菜单工具→开发板→ArduinoUno点击“Play”按钮进行Verify/Compile(此步成功)点击上传按钮,得到错误信息我在WindowsXP中尝试了这些完全相同的步骤,并且上传成功,所以我肯定没有正确配置Fed

c - 为什么客户端调用shutdown(sockfd, SHUT_RD)后,客户端程序中的recv()可以接收到发送给客户端的消息?

来自POSIX.1-2008/2013documentationofshutdown():intshutdown(intsocket,inthow);...Theshutdown()functionshallcauseallorpartofafull-duplexconnectiononthesocketassociatedwiththefiledescriptorsockettobeshutdown.Theshutdown()functiontakesthefollowingarguments:socketSpecifiesthefiledescriptorofthesocket.h