简体   繁体   中英

Socket: send() function returned 'Broken Pipe' error

I am new to socket programming, I am trying to send some packets to server using the send() function in C++, but I am always getting a 'Broken pipe' error while sending packets to the server. Could you please help me for the below points?

  1. When the send() function returns the "Broken pipe" errors?
  2. What are the causes for "Broken pipe" errors in socket programming?
  3. What will be the solution for "Broken pipe" error from the send() function?

Note: I am using named socket to communicate between client and server.

  1. When send() returns the "Broken pipe" errors

When you have written to a connection that has already been closed by the peer.

  1. What are the causes for "Broken pipe" errors in socket programming

Writing to a connection that has already been closed by the peer.

  1. What will be the solution for "Broken pipe" error from send() function.

Don't write to a connection that has already been closed by the peer.

It usually indicates that you have committed a prior application protocol error, so the peer didn't understand you and gave up.

I had the same problem and figured you can put in MSG_NOSIGNAL as the flag paramether insted of 0 to prefent the send function from throwing a signal if the socket is closed. insted it will return a -1 to show you that sending was not successfull.

int rc = send(sockFD, "data", 4, MSG_NOSIGNAL);
if (rc == -1) cout << "socket send failed" << endl;

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM