static ssize_t send_buffer(int sockfd)
{
- return send(sockfd, snd_buf, PACKET_SIZE, 0);
+ ssize_t nbytes = 0;
+ ssize_t n;
+
+ while (nbytes < (ssize_t) PACKET_SIZE) {
+ printf("before send\n");
+ n = send(sockfd, rcv_buf, PACKET_SIZE - nbytes, 0);
+ printf("after send\n");
+ DIE(n < 0, "send");
+
+ if (n == 0)
+ break;
+ nbytes += n;
+ }
+
+ return nbytes;
}
static ssize_t receive_buffer(int sockfd)
static ssize_t send_buffer(int sockfd)
{
+ ssize_t nbytes = 0;
ssize_t n;
- printf("before send\n");
- n = send(sockfd, snd_buf, PACKET_SIZE, 0);
- printf("after send\n");
- if (n < 0)
- perror("send");
+ while (nbytes < (ssize_t) PACKET_SIZE) {
+ printf("before send\n");
+ n = send(sockfd, rcv_buf, PACKET_SIZE - nbytes, 0);
+ printf("after send\n");
+ DIE(n < 0, "send");
- printf ("n = %ld, send\n", n);
+ if (n == 0)
+ break;
+ nbytes += n;
+ }
- return n;
+ return nbytes;
}
static ssize_t receive_buffer(int sockfd)
while (nbytes < (ssize_t) PACKET_SIZE) {
n = recv(sockfd, rcv_buf, PACKET_SIZE - nbytes, 0);
- if (n <= 0)
+ DIE(n < 0, "recv");
+
+ if (n == 0)
break;
nbytes += n;
}