Sponsored Content
Full Discussion: write on Non Blocking Socket
Top Forums Programming write on Non Blocking Socket Post 302451839 by satish@123 on Wednesday 8th of September 2010 07:35:12 AM
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?
 

10 More Discussions You Might Find Interesting

1. 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

2. 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

3. 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

4. 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

5. 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

6. 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

7. 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

8. 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

9. 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

10. 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
PSELECT(2)						      BSD System Calls Manual							PSELECT(2)

NAME
pselect -- synchronous I/O multiplexing a la POSIX.1g LIBRARY
Standard C Library (libc, -lc) SYNOPSIS
#include <sys/select.h> int pselect(int nfds, fd_set * restrict readfds, fd_set * restrict writefds, fd_set * restrict exceptfds, const struct timespec * restrict timeout, const sigset_t * restrict newsigmask); DESCRIPTION
The pselect() function was introduced by IEEE Std 1003.1g-2000 (``POSIX.1'') as a slightly stronger version of select(2). The nfds, readfds, writefds, and exceptfds arguments are all identical to the analogous arguments of select(). The timeout argument in pselect() points to a const struct timespec rather than the (modifiable) struct timeval used by select(); as in select(), a null pointer may be passed to indicate that pselect() should wait indefinitely. Finally, newsigmask specifies a signal mask which is set while waiting for input. When pselect() returns, the original signal mask is restored. See select(2) for a more detailed discussion of the semantics of this interface, and for macros used to manipulate the fd_set data type. RETURN VALUES
The pselect() function returns the same values and under the same conditions as select(). ERRORS
The pselect() function may fail for any of the reasons documented for select(2) and (if a signal mask is provided) sigprocmask(2). SEE ALSO
kqueue(2), poll(2), select(2), sigprocmask(2), sigsuspend(2) STANDARDS
The pselect() function conforms to IEEE Std 1003.1-2001 (``POSIX.1''). HISTORY
The pselect() function first appeared in FreeBSD 5.0. AUTHORS
The first implementation of pselect() function and this manual page were written by Garrett Wollman <wollman@FreeBSD.org>. BSD
August 16, 2013 BSD
All times are GMT -4. The time now is 09:14 PM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy