I have sever and client apps, running in IPv6 on Ubuntu1410 default kernel.
Serve: socket listens on loal TCP port and use select() to handle new connections and data;
Client: socket connect the server IPv6 address and port by TCP.
The connection can be successfully established.
But, when write() data, buffer size is 128K, it will block in write().
As I need to write many data so i have a for loop to call write(). Sometimes, write() will succeed for one or two times but then it blocks again.
My app supports IPv4 and Ipv6. the write() works on IPv4.
And, if I tested on ::1 (serer and client running on same machine), IPv6 also works.
r = write(fd, buf, buf_size);
write()absolutely should block when the client is slow reading and the buffer fills up. It just sounds to me like you haven't properly tested for whether or not this is happening. - Jeremy Visser