sockets - can you send data while waiting on select()


 
Thread Tools Search this Thread
Top Forums Programming sockets - can you send data while waiting on select()
# 1  
Old 05-28-2011
sockets - can you send data while waiting on select()

Hey guys,

Is it possible to have a worker thread send data out a TCP connection while another thread is waiting using using select() on that same connection?

If not, then what is the correct way to maintain a connection, react to incoming data, and send data over a TCP connection?

Thanks for any insight.

- scubanarc
# 2  
Old 05-28-2011
Quote:
Originally Posted by scubanarc
Is it possible to have a worker thread send data out a TCP connection while another thread is waiting using using select() on that same connection?
Yes, that is one way of handling things.

Your terminology is just a bit off though. The select() is listening for connection requests on the port; there is no connection.
# 3  
Old 05-28-2011
Quote:
Originally Posted by agama
Yes, that is one way of handling things.

Your terminology is just a bit off though. The select() is listening for connection requests on the port; there is no connection.
Isn't that what accept is for? select() can indeed wait until an existing socket is ready to send or receive...

I'd try to avoid a race condition like waiting for a socket to become ready for writing while writing to it.
This User Gave Thanks to Corona688 For This Post:
# 4  
Old 05-29-2011
Quote:
Originally Posted by Corona688
Isn't that what accept is for? select() can indeed wait until an existing socket is ready to send or receive...
I think that Corona has it right. At least that's my understanding.

So the real heart of the question is whether or not a single socket can be used for blocking and sending at the same time. Has anyone attempted this? We are having strange issues when doing it, like seg faults.
# 5  
Old 05-29-2011
A segfault would almost certainly be a bug in your code. Please post a minimal example that still segfaults.
# 6  
Old 05-29-2011
Quote:
Originally Posted by Corona688
Isn't that what accept is for? select() can indeed wait until an existing socket is ready to send or receive...

I'd try to avoid a race condition like waiting for a socket to become ready for writing while writing to it.
Yes, it's my brain that is off this week. (grumble). I assumed the OP wanted to listen for additional connections while using the established ones.
# 7  
Old 05-30-2011
After select() returns without error you pass the socked handler to accept(), accept() will return a new socket ONLY for that particular connection/session, the first socked is free again to be handled by select() and loses relation with previous client. You should not write or read anything on the main socket.
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

awk to select 2D data bins

I wish to use AWK to do something akin: Select all 2D data with 1<$1<2 and -7.5<$2<-6.5 But it's not working awk 'END {print ($1<=2&&$1>=1&&$2<=-6.5&&$2>=-7.5)}' bla Data: -1.06897 -8.04482 -61.469 -1.13613 -8.04482 -61.2271 -1.00182 -8.04482 -61.2081 -1.06897 -8.13518 -60.8544... (2 Replies)
Discussion started by: chrisjorg
2 Replies

2. IP Networking

Packetize data to send it over tcp sockets

Hello All, I am very new to socket programming and client server architecture. I have to write a client which will send some data to server and server will display it on its console. I am ready with both client and server but my problem is with packetizing of data -- I have... (1 Reply)
Discussion started by: anand.shah
1 Replies

3. UNIX for Dummies Questions & Answers

Using grep to select data from file

Hello all, Once again I need to call upon the masters for help. I have a file called endpoint_data. IN that file I have groups of endpoints. However all I need from the file is this.... ENDPOINT NAME = SIPWOODSBC SIG PRI FQDN/IP ADDRESS/DOMAIN NAME = 10.xxx.xxx.xxx SIG SEC... (4 Replies)
Discussion started by: jay11789
4 Replies

4. Shell Programming and Scripting

Sed for select and retrieve data

I would like to recover the data from 3 text tags. These three markers are located between the tags specific location <tag1> and </tag1> knowing that they are in many places. In File.txt: <tag2>txt2</tag2> <tag3>txt3</tag3> <tag4>txt4</tag4> .... <tag1> <tag2>txt2</tag2>... (3 Replies)
Discussion started by: Amad
3 Replies

5. Shell Programming and Scripting

Select data from a file

Hi , I want to select data from a file .the datas in a file will be in both upper and lower case. can able to select particular data using awk. file is like Ram Selva 24332 UNIXTEAM Karthi Siva 43322 UNIXTEAM In read if i enter selva as lowercase its not displaying result. (9 Replies)
Discussion started by: boopal
9 Replies

6. Homework & Coursework Questions

program to send messages to parent using pipes and select system call

Write a program using select, which will create some number of child processes that continuously send text messages to the parent process using pipes. Each child has its own pipe that it uses to communicate with the parent. The parent uses select () to decide what pipes should be processed to... (1 Reply)
Discussion started by: ripssingh
1 Replies

7. UNIX for Dummies Questions & Answers

Send email with attachment and body : mailx , waiting for input , signal Control D

Hi, I am trying to send email with attacment and body using "mailx" (cat body.txt; uuencode attach.txt) | mailx -s "Attachment" abc@xyz.com When i type this command, the shell is still waiting for me to enter something in standard input and press control D before it sends a mail and... (2 Replies)
Discussion started by: aliaszero
2 Replies

8. Shell Programming and Scripting

select data from list

Hi! My data file contains a two columns list. It looks like: 1 3.789 2 6.789 3 7.890 4 8.900 5 6.789 6 1.987 7 10.987 8 2.987 9 0.987 I would like to create a new list using the awk command, just selecting data from the second column but also printing the first column. Let say I select... (3 Replies)
Discussion started by: cris48
3 Replies

9. Programming

Sockets select() question

Hello everyone. I have a question regarding select() function. Imagine i had passed a fd_set* as the readfds parameter. Can i add some fd to the fd_set, using FD_SET, while the thread is blocked in the select call(obviously from another thread), and will that select call monitor those fd, even if... (2 Replies)
Discussion started by: adadon
2 Replies

10. Programming

Sockets donot send any thing to client

I have written a socket program in C under RedHat Linux 6.2. This program is using SOCK_STREAM (TCP) to connect to any ip address at port # 23. The program is hosted on the linux machine and works well with Cisco routers. But when I am trying to connect to the same linux machine, it does not return... (4 Replies)
Discussion started by: biswa
4 Replies
Login or Register to Ask a Question