write on Non Blocking Socket


 
Thread Tools Search this Thread
Top Forums Programming write on Non Blocking Socket
# 1  
Old 09-06-2010
write on Non Blocking Socket

How to know whether socket is ready for write.
Code:
select(maxfds, (fd_set *)NULL, &writefds, NULL, &timeout);

By default socket is set for write without checking whether it would block or not? If so how do I know my FD is ready for writing.
# 2  
Old 09-07-2010
1. select returns > 0 if there are available sockets

2. FD_ISSET(sock, &writefds) returns true if sock is in the FDSET and the sock descriptor is ready to write. sock is an integer and is one of the sockets you intend to write.
# 3  
Old 09-08-2010
I am connecting to port 7(echo service) in the remote machine.
suppose port 7 is not running in the remote machine I do not want to wait in connect call for long time.. so I am using non blocking connect with timeout of 3 seconds. But I am always getting the return code 1 from select call though the echo service is not running incase of write falgs set.

Code:
x=fcntl(S,F_GETFL,0);
fcntl(s,F_SETFL,x | O_NONBLOCK);
rc=connect(s, (struct sockaddr *)&sin, sizeof(sin));
if( errno == EINPROGRESS)
{        
     FD_ZERO(&writeFDs);
     FD_SET(s, &writeFDs);
     rc=select(maxFDs, (fd_set *) NULL, &writeFDs,  (fd_set *)NULL, 
                                                                (struct timeval *)(&timeout));
     if( rc ==0 || rc == -1)
       printf(" Timed out -- Not connected even after 3 secs wait");
    else
    {
	if(FD_ISSET(s,&writeFDs))
       	write(s,"service",7);
    }
}

In the above FD_ISSET is returning true and when it tries to write it retrun EPIPE, because of not connected. How we decide that service is ready for writing?
# 4  
Old 09-08-2010
Closing this thread - looks basically like a double post to me. Continue here:
non blocking connect
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Programming

Which are blocking and non-blocking api's in sockets in C ?

among the below socket programming api's, please let me know which are blocking and non-blocking. socket accept bind listen write read close (2 Replies)
Discussion started by: VSSajjan
2 Replies

2. Programming

Looping connect call for a non blocking socket

will there be any unexpected results on looping connect call for a non blocking socket to determine the connection based on error code. I am getting connection unsuccessful intermittently and so wondering whether is the timeout 500 millisec not sufficient or looping connect cause any unexpected. ... (7 Replies)
Discussion started by: satish@123
7 Replies

3. Shell Programming and Scripting

Read and write to tcp socket

Hello all, I have a requirement to read and write to a tcp socket from an HP-UX shell script. I see a /dev/tcp character device on my servers: crw-rw-rw- 1 root root 72 0x00004f Mar 28 18:37 /dev/tcp So I believe this is what I should use. The problem is that all the... (2 Replies)
Discussion started by: lupin..the..3rd
2 Replies

4. IP Networking

Clarification - Setting socket options at the same time when socket is listening

I need clarification on whether it is okay to set socket options on a listening socket simultaneously when it is being used in an accept() call? Following is the scenario:- -- Task 1 - is executing in a loop - polling a listen socket, lets call it 'fd', (whose file descriptor is global)... (2 Replies)
Discussion started by: jake24
2 Replies

5. Programming

Write-Write on a socket

Can anyone tell what happens if each end writes at the same time on the same socket ? - if one of them issues a read() after write() has completed, will it record into the buffer what the other sent ? ex. e1 writes to e2 - - - while - - - e2 writes to e1 (at the same time) e1 read () - what... (1 Reply)
Discussion started by: gendaox
1 Replies

6. Programming

socket function to read a webpage (socket.h)

Why does this socket function only read the first 1440 chars of the stream. Why not the whole stream ? I checked it with gdm and valgrind and everything seems correct... #include <stdio.h> #include <stdlib.h> #include <sys/types.h> #include <sys/stat.h> #include <string.h> #include... (3 Replies)
Discussion started by: cyler
3 Replies

7. UNIX for Advanced & Expert Users

connect problem for sctp socket (ipv6 socket) - Runtime fail Invalid Arguments

Hi, I was porting ipv4 application to ipv6; i was done with TCP transports. Now i am facing problem with SCTp transport at runtime. To test SCTP transport I am using following server and client socket programs. Server program runs fine, but client program fails giving Invalid Arguments for... (0 Replies)
Discussion started by: chandrutiptur
0 Replies

8. IP Networking

Can we write a multiple thread to receive from a single socket file descriptor

Hi Friends, I have written a program which will listener for more than 1000 requests per second from a single socket descriptor and then it will process those requestes. Its taking X amount of time. Now i want to reduce that time. Will I can write multiple threads to receive the... (2 Replies)
Discussion started by: pa.chidhambaram
2 Replies

9. Programming

How to Write Linux Friendly Async Socket I/O

I am presently refactoring a windows deamon with an eye towards porting it to linux someday. Presently the application uses a single background thread and asynchronous socket I/O to implement FTP and HTTP clients in a single switch statement (2000 lines and 100 cases just for the switch... (3 Replies)
Discussion started by: siegfried
3 Replies

10. Programming

read/write socket error

I have client and server connected. client write and read from csock. server write and read from ssock suppose the server does : .... close(ssock); //send FIN to client othertask(); .... READ ERROR if after the server close() the client does: ... read(csock,...); ...... (2 Replies)
Discussion started by: gio
2 Replies
Login or Register to Ask a Question