| 
                    
                 | 
                              
                              
                
                    Question about socketpair
                     
                         
                    
                 
               | 
              
          
        
        
        
         
        
        
        
         
            
              | 
                
                 04/16/2008 5:45 PM 
                post6938 
               | 
                            
                              
                Question about socketpair
                     
                         
                    
                 
                
Does anyone know of any way to write to a socket and block until the data has been read at the other end?
Apparently, the socket has some sort of receiving/sending buffer (SO_RCVBUF/SO_SNDBUF options), I was thinking maybe we 
can change the value to block write(). So I tried setting the buffer size to 1 byte, and for some reason it didn't work:
 setsockopt() returned correctly, but write() function was not blocked anyway. I also tried buffer size 16 and 64 byte, 
they didn't work either.
Any idea?
Thanks.
//*************** Code ***************************
    int size = 1;
    if (setsockopt(fda[0], SOL_SOCKET, SO_RCVBUF, &size, sizeof(int)) < 0){
        cout << "something is wrong" << endl;
    }
    
    if (setsockopt(fda[1], SOL_SOCKET, SO_SNDBUF, &size, sizeof(int)) < 0){
        cout << "something is wrong" << endl;
    }
              
                  
                 
               | 
            
            
              | 
                
                
               | 
            
          
            
              |               
                
               |