Help with sockets in C


 
Thread Tools Search this Thread
Top Forums Programming Help with sockets in C
# 1  
Old 03-29-2011
Help with sockets in C

if i have a server which wants to connect to exactly 5 clients, does that mean i need 5 socket file descriptors and use
listen(socket_fd,1);
for each one

or just do

listen(socket_fd,5)

also whats the second parameter number mean? what happens if i put 0 there?


also if i am connected to five clients, and i have listen(socket_fd,5), does that mean while one of the 5 is being handled, it has support for the other 4 to continue waiting?, or I am not sure what its doing here, can I even put a 0 there, if I have 5 clients connected, will that work?
# 2  
Old 03-30-2011
For your requirement to connect your server to exactly 5 clients,
listen(socket_fd,5) is the right option.

>>also whats the second parameter number mean? what happens if i put 0 there?


The second parameter is the limit on the maximum number of incoming connection requests to your server socket that can remian pending waiting to be accepted.

You could start different threads for each accepted connection and process each separately. In the main thread you could poll the listen socket for an incoming connection request and accept the same.

I dont know the answer to what happens if you put a 0 for teh second parameter, but my guess is if a second connection request arrives when you already have one in the listen queue and it has not been accepted yet by your application, then this would immediately be dropped.
# 3  
Old 03-30-2011
when u say to have
listen(socket_fd,5)
do u mean like
listen(socket_fd1,5)
listen(socket_fd2,5)
listen(socket_fd3,5)
listen(socket_fd4,5)
listen(socket_fd5,5)

or just one?
# 4  
Old 03-30-2011
You need just one. Your socket_fd is usually not the socket with which the client and server communicate. It is rather just the point where the client connects to first and then waits for the server to open another socket on which the real data exchange takes place.
So if you have

listen(socket_fd, 5);

This means that 5 connetions are allowed to be in the queue and wait to be served. If all of these slots are taken, they will be blocked.
You can then accept the connections in this queue with the accept() call and this function will return a new file descripter which marks the direct connetion to the client.
# 5  
Old 03-30-2011
i have this other problem
when i run my server, it works fine, and i get the connection from the client, but right after if i test it again
i get
ERROR on binding: Address already in use
but if I change the port, and compile, then change the port to what it was before, and compile, then run it , then it works again, then the whole thing happens again

does anyone know why this could be happening?

---------- Post updated at 01:51 PM ---------- Previous update was at 12:36 PM ----------

nvm i fixed it

---------- Post updated at 01:52 PM ---------- Previous update was at 01:51 PM ----------

but to keep a server and client running for more than one iteration, i dont understand how to do that

where do you put the while(1 ) {} block
what goes in the block?
# 6  
Old 03-30-2011
Anything you want to run repeatedly.
# 7  
Old 03-30-2011
i mean like
in the while loop do i need to redefine all the sockets declarations?

---------- Post updated at 02:19 PM ---------- Previous update was at 02:18 PM ----------

say i want exactly 5 connections
does the
listen(soc,5);
go in the while loop?
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Programming

Any example about sockets in C++?

Hi, i am student, think learning about c++, someone has a example the how establish a conection with sockets :b::b: (1 Reply)
Discussion started by: mmartinez
1 Replies

2. Red Hat

Sockets

hai guys, I'm doing a project in which one server communicates with several clients. How can i do it when i have different port numbers???:confused: (0 Replies)
Discussion started by: rajeshb6
0 Replies

3. Programming

Sockets

Hi,i now moved into a different section where i need to use sockets. i am completely nill in sockets. can some body please provide me what are the requirements for a socket. to use sockets in c. thanks (1 Reply)
Discussion started by: MrUser
1 Replies

4. Programming

need help with sockets

anyone and teach me how to save standard output to a file in a client/server socket. I know how to read them to the screen but i'm not quite sure how to save them to a file. my read to screen file code: memset(line, 0x0, LINE_ARRAY_SIZE); while (recv(connectSocket, line, MAX_MSG, 0) >... (1 Reply)
Discussion started by: crunchyuser
1 Replies

5. IP Networking

sockets and firewall

Is it possible to trace the packages and the statuses of client's and/or server's sockets by the UNIX network administrative tools? Two applications interact via sockets. There is no problem if they stay in the same network segment. If their hosts connected through the firewall then they aren't... (4 Replies)
Discussion started by: gogogo
4 Replies

6. Solaris

Sockets in use

Is there a way to see what sockets are in use? The developers here are getting some defunct processes and they would like to get a socket list. This is on a Solaris 8 machine. Thanks! (1 Reply)
Discussion started by: kjbaumann
1 Replies

7. UNIX for Dummies Questions & Answers

sockets

how do i mointor how many sockets are opened from a particular foriegn address? (2 Replies)
Discussion started by: kirpond
2 Replies

8. Programming

sockets

Hai, How cani declare socket and collect the data in a string varialbe. Since i am new to this i am asking this. Can we connect multiple port. Thank you. (6 Replies)
Discussion started by: arunkumar_mca
6 Replies

9. Programming

Sockets!?!?!?!?!?!

I am looking for a way to have a program listen on a port (example: 8000) for communication I will be sending via that port to it(Linux Kernel machine). Once it recieves an appropiate command I need it to run a .bat file in linux. I know what I need to do but I am running into a few problems:... (8 Replies)
Discussion started by: bigB8210
8 Replies

10. Programming

sockets...

Hi ! I had a verry simple question to ask... In unix when we create pipes.. the unnamed pipes that is... is there any way to access those pipes outside the code ? Another thing.. do sockets have an entry in the inode table ? TIA, Devyani. (1 Reply)
Discussion started by: devy8
1 Replies
Login or Register to Ask a Question