Programming :: Timer In Socket Programming - Wait For X Sec After Read() And Then Disconnect The Client Connection
Mar 8, 2011
I have a server listening on incoming client connections. Once the client establishes SSL connection with the server, the server waits on read() from the client. Only Client can disconnect the connection. I want to have a timer in the server program to wait for x secs after read() and then disconnect the Client connection.
i have a server program which accept multiple client connection and am using polling. like every 2 secs it will look to client whether any data is received after it binded. i have used setitimer but there is runtime error i got.. the server accept all client connection but doesn't execute any msg which client sent.
I wanted to know how can I set a period of time to a tcp connection to wait for request or respond for tcp block read. which system call or function I can use? Does any body know a very simple quick and easy reference on web for socket programing that has lots of socket programing examples in it?
iam just trying to connect to server which accepts one client and server will read(blocking operation) infinitely, but After closing the client socket the server "read operation" is returning zero and "errno variable(in errno.h)" value is also zero. how can i detect whether a client socket is closed/active..?
I want to configure socket timer to release socket(port) once the connection is terminated. Do we have something in Linux OS to configure this delay to release socket?.
Any command, link or man-page anything will be helpful.
I'm building a simple(?) socket server using threads to serve up a few requests. The spec is such that I have to listen to three ports at once, so I decided to use pthread to create three separate threads that would wait for connections, then spawn new threads to handle them.
The problem is that when I do this, for some reason the program never enters the wait loop and instead terminates (All three threads did get created since the messages get printed properly.) It gets to the line which prints "???", but not the line after the accept() call.I don't see an open port when I check for one either so I'm 99% sure they're terminating.Basically I have a main() method which has three calls to pthread_create, which should result in three threads being run that all wait for connections (listenOnPort). After each thread creation I print some info to make sure it's actually being created.
By the way, when I just run listenOnPortwithout threading, the server appears to enter the loop correctly and seems to be waiting for requests. It's only when I run the functions as threads that the problem seems to happen.The source is attached below. Any help will be appreciated. Much of the code is borrowed from a website (I can't post it because I am new here.) You need not worry about the handler_ methods because those are just methods that are run by the threads themselves.
Also--the original source was in C and I changed it to C++. Should I just use C? server.h Code: /* * server.h
Is it possible to swap a client ip and port ? This is what I am trying to do. Let say you have Comp1 and Comp2 And you have Server between them. My goal is to get Comp1 and Comp2 know each others IP So Comp1 connects to server And server stores comp1's IP In a text file or other place And Comp2 connect to server And server also stores his info And then both comp1 and comp2 dowload the tex file And use the info on it.
I need to read data from a socket but it should be always listening because data arrives continuously .. I thought something like this would do it but it doesn't work .... I already set the socket options before
I want to built a Chat Program (based on Socket connection) between client and server. I use the GTK+ &GLADE graphic tool. Can you send me the code for this program or any material to learn. Also, I want to know how to show the input to text view (in GTK+&Glade).
Elementary... Here's the tricky part: next i have to handle user level ack the server is sending to "client"... To do that i have to open server socket on the same port number the system assigned to my client socket before. How can i get it ( in user level code)?
Reading some examples on net and copying some codes I was able to build a (frankstein) server that accept connection from one client and receive and send messages to it. The big problem that shows up is that I don't know when client disconnects from my server.
I've been looking for a solution, but no success. I'd read about SO_KEEPALIVE option (which could solve my problem), but I don't know how to use it (how to check the value of it).
I can't use ping because the server (machine) could be running, but not the client (software).
Anyone knows a good tutorial or how to (for beginners like me xD) of TcpIp sockets using c/c++ and how to detect when a client disconnect?
I want to get the connected client MAC Address after accept() call. I can get the IP address of the client but i don't know how to get the client MAC Address in my this programme. Here I am Posting my Code.
I am writing a TCP server in C, and the server listens to incoming client connections and accepts them. It then creates a thread to handle the client. The clients are expected to only receive data from my server and not send any data. So if I use a select() call with a recv(), I believe that the recv() will just block forever since there will not be any data coming from the client. If I use a non-blocking recv(), then this will just return a 0 which tells me nothing because the client is not expected to send any data. I am not sure if I have misunderstood some socket concepts, but I need a solution to detect when the client has disconnected so that I can close the socket and stop sending data to the client. As I understand it, simple ACKs etc are not captured by the recv(), and only data sent by the client will cause recv() to return a non-zero value, so I am not sure how to know when the client has disconnected.
My network is barely functional. I'm running 2 linux servers connected by openvpn (tun) through routers on both sides. There are Windows clients (98 and XP) on both subnets. One server (ls3) acting as PDC for the domain. The Windows clients use the respective linux boxes as gateways. On the server side (ls3 which is both openvpn server and samba server), all the clients can read/write properly to shares on both sides. The problems are all on the client side. Share connections to the server side disconnect after a few moments.
Browsing on the client side windows machines is fine. I can see shares on the server side. Some server side files open and are readable, writable, other server side files will not open. Some samba logon scripts on the server side can be opened from the client side. Others open after a long wait to a blank file! Permissions on server side files are set to 777 for testing. If a file won't open or reads "blank", that doesn't change no matter how many times you try. A non-readable/writable file overwritten by a readable/writable one can be read and written to!
I can ping successfully from any client on either side to any other client by either ip address or workstation name. Firewalls on both side are set to forward tcp and udp traffic going to port 1194 to the respective gateway linux boxes. Iptables on both linux gateways are down for testing. I tried reversing the openvpn server/client roles with the same result; the same physical side of the network had the problem. On one of the windows 98 clients, I wiped out the networking configuration completely and rebuilt it from scratch. Same result.
One one of the windows xp clients, I tried to rejoin the domain. It went through successfully but the result was the same as above. The network was operating smoothly for several years until the client side dsl modem broke last week. It was replaced with a newer model and at the same time I migrated from a pptp connection to openvpn. How to resolve this, Is this something to do with openvpn? Is this a network hardware problem? Am I missing something in the port forwarding on the routers? My smb.conf files are ancient except I added interface tun0. I have never seen 2 files sitting next to each other in the same directory where one opens and the other doesn't!
I'm running Mandrake 9.2 on the client side and Mandriva 2008 on the server side. I have a Sonicwall firewall on the server side, a Westell 7500 on the client side. I note that during the modem install, the http port was opened to the linux box on the client side and the access log got huge over the weekend and I ran out of disk space until I closed it down and deleted the log. I tried a simple test while viewing /var/log/daemons/errors on the client side. From a windows workstation in the client subnet, I opened a dos window and tried to print a file located on the samba server on the openvpn server machine which I knew NOT to be problematic.
The file printed and there were no errors reported in the log. I repeated the test with a known problematic file. The file would not print. The errors log noted: Authenticate/Decrypt packet error: packet HMAC authentication failed I regenerated the static.key file on the server side and scp'd it to the client side and restarted both openvpn's. I checked for duplicate files named static.key on both sides. Same error.
i have problem in socket programming, while displaying received message in file,i got a problem... i cant able to write it in the file.... this is the code....
now my problem is run time error i can able to create file but i cant able to write file....log.txt contain nothing.... as here i have give sample code... dont say not initialising function and all.... i have initialised , please only see func1() - my problem is only not able to write msg which i got received from the client..
the above code works fine.if we copmile and run ./a.exe 192.xx.xx.xxx 1111 and press enter it works fine..everytime it asks "Please enter the message: " and if give that will be displayed in server. but my problem is i dont want to print everytime "Please enter the message: " i just want to feed some words one by one to the socket.
im getting that error in my code for some reason. I compiled my code, and when i try to run this server it throws me an error on my call to setsocketopt(). The only way it can reach that part of my loop is if it succeeds when it calls sock() so I dont understand why the error says its an operation on a non-socket. Im just trying to set up a server to pass messages from a client to it a viceversa. Here is the code:
Code: int main() { int socket_fd, new_socket_fd, k; struct addrinfo hints, *server_info, *p; struct sockaddr_storage peer_address; code....
When sending data over the socket, the sending socket includes 0x00 after each sent byte. I wonder how this can be avoided -- I just want to transfer the data in the tx_buffer as it is.
# ./serv & [1] 6895 # ./EUG 127.0.0.1 EUG: Data to be transmitted: 0x35 0x32 0x30 0xff 0x03 0x31 EUG: Data - #Bytes transmitted: 6 ./serv: Here is the message: '5'
How can we build a packet using C?we have a structure called sockaddr_in which is use to for IPv4,so that we can define address,port and etc in this way:
This is my main question:Quote: In raw socket sniffing: how do I copy data from a structure into a char[] or pointer? My problem: I started doing some raw socket programming in OpenWRT (I'm a newbie) for research. It's been a long time since the last time I programmed in C, so here's my newbie question/problem.
I'm receiving packets and using an .h file with the structures to get the information of each 802.11 packet in monitor mode (attached to this post).My (simple) goal is to get the Tx MAC Address. No luck. This is my "read the prism header" function:
I am currently doing a research on video transmission over wireless LAN. I tend to transmit my offline file (xx.svc) from server to client.It may sound stupid (since I have a very little knowledge about c programming and raw socket), but my biggest challenges is that when I want to write the file to the buffer, how actually to define/include the file at the programming coding? where I need to locate the file? Is it at the same folder with my c programming, or somewhere in the linuxinclude folder?
Can anyone just give a simple example on how to include a file and write it into a buffer before send it through raw socket.
I am looking to be able to connect to an IRC server in a C program. I have followed some instructions from an old book I have however it doesn't seem to be working. I've tried connecting to localhost on my ssh port and it still doesn't want to work. This is what I have so far as a piece of skeleton test code:
I have currently had the need to go back to basic socket programming, and implemented a simple udp packet sender. But I realized I needed to be able to select which network interface to send the packets from.
The reason is so that one of the interfaces has vlan tagging, and I need my UDP packets to be accordingly vlan tagged. For example, one of the interfaces is eth1.200.