Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

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.

like image 683
K.H.Nagaradder Avatar asked Oct 21 '25 04:10

K.H.Nagaradder


2 Answers

  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.

like image 145
user207421 Avatar answered Oct 22 '25 16:10

user207421


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;
like image 45
Phillip Avatar answered Oct 22 '25 16:10

Phillip



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!