C :: Implementing Non Blocking UDP Socket By Select Function
Apr 22, 2013
I wanted to create an asynchronous/non-blocking udp client server application where the client and server were supposed to chat away with each other without waiting for each other's turns. I came to know that this could be done by select()... here is my Server(Mentioning only the communication part):
Code:
fd_set readfds,writefds;
while(1){
FD_ZERO(&readfds);
FD_ZERO(&writefds);
FD_SET(sd,&readfds);
FD_SET(sd,&writefds);
int rv = select(n, &readfds, NULL, NULL, NULL);
[Code] .....
At first on the server side I wrote:
int rv = select(n, &readfds, &writefds, NULL, NULL);
But that led to the printing of an entire empty array on the server console when the server initialised in addition to the fact that communication between the server and client was not proper. removing "&writefds" did remove the redundant data but the improper communication issue still persists...
View 3 Replies
ADVERTISEMENT
Mar 24, 2014
As requested by an exercise I have to write a function which:
- takes as parameter 1 unsigned which represent a timout value, 1 string which represent an IP address and an array containing port's numbers
- sends an UDP packet (1024 byte with NULL content) to each pair <IP,port>
- waits for the first reply, if it receives a packet within the timeout (set by select() function), the function returns the port of the process who replied, else it returns -1
I think I can do anything of above, but I've not understood how to set and use the select() in this case.
This is my code as it is at the moment
#define BUFLEN 1024
int comUDP ( unsigned timeout, char* ip, int ports[] ) {
int s_ds_sock, c_ds_sock;
struct sockaddr_in server_socket, client_socket;
char msg[BUFLEN] = NULL; //message to send to the clients
fd_set fds;
[Code] .....
View 2 Replies
View Related
Jun 2, 2014
I am trying to write a program for a multiuser chat. I am trying to use select() function but I still cannot use the server for multiusers. I am able to access only one client at a time. I am running the code in Windows 7 using Visual Studio's Command Prompt. Here is the server code.
Code:
#include <stdio.h>
#include <winsock.h>
#include <stdlib.h>
#define WSVERS MAKEWORD(2,0)
WSADATA wsadata;
int main(int argc, char *argv[]) {
[Code] .....
View 3 Replies
View Related
Mar 19, 2013
Implement ksmall as a C++ function. Use the first item of the array as the pivot. This is what I have so far, but everytime I compile it crashes ....
#include <cstdlib>
#include <iostream>
using namespace std;
int kSmall(int k, int anArray[], int first, int last);
[Code] ....
View 4 Replies
View Related
Jul 11, 2013
Ideally i would like to use this model but im having difficulty, is there a way in which this will work?
void loginfunction (string,int);//function prototypes
void sendfunction();
void recivefunction();
int main {
loginfunction (cplusplus.com,80);
loop()
[Code]...
View 12 Replies
View Related
Nov 30, 2012
For this problem, you will design and implement 2 classes and then write a driver function to test these classes. The first will be a C++ class for an abstract data type color with a public enumeration type colorType that has the color values shown in Listing 10.8. Your abstract data type should have an attribute for storing a single value of type colortype and member functions for reading (readColor) and writing (writeColor) a color value as well as setting and accessing it. The function readColor should read a color as a string and store the corresponding color value in the value attribute of a type color object. The function writeColor should display as a string the value stored in the value attribute of a type color object (see Figure 7.5). Modify class circle and the driver function in Listing 10.9 to include and use this class. You'll need to remove the declaration for color in class circle. Test your modified driver function with the new color and circle classes.
The second class will be to design and implement a rectangle class similar to class circle. Be sure to incorporate the new color class you have written and tested in the first part of the programming exercise. Write a client program that asks the user to enter a shape name (circle or rectangle) and then asks the user for the necessary data for an object of that class. The program should create the object and display all its attributes.
The circle class .h and .cpp files as well as the original driver function will be supplied. You are to provide the .h and .cpp files for the new color class and the modified driver function as well as the .h and .cpp files for the rectangle class and the client program that uses all three classes.
What I have so far, and I'm pretty lost;
color.h
Code:
Code:
//color.h
//Color class definition
#include "stdafx.h"
#ifndef COLOR_H
#define COLOR_H
class color {
public:
enum colorType {black, blue, green, cyan, red, magenta, brown, lightgray, nocolor};
[code].....
View 4 Replies
View Related
Nov 30, 2012
I'm am having a few issues with this program, they stem from passing the color.h and .cpp into another .h and .cpp, and frankly getting how those two things really fit together.
For this problem, you will design and implement 2 classes and then write a driver function to test these classes. The first will be a C++ class for an abstract data type color with a public enumeration type colorType that has the color values shown in Listing 10.8. Your abstract data type should have an attribute for storing a single value of type colortype and member functions for reading (readColor) and writing (writeColor) a color value as well as setting and accessing it. The function readColor should read a color as a string and store the corresponding color value in the value attribute of a type color object. The function writeColor should display as a string the value stored in the value attribute of a type color object (see Figure 7.5). Modify class circle and the driver function in Listing 10.9 to include and use this class. You'll need to remove the declaration for color in class circle. Test your modified driver function with the new color and circle classes.
The second class will be to design and implement a rectangle class similar to class circle. Be sure to incorporate the new color class you have written and tested in the first part of the programming exercise. Write a client program that asks the user to enter a shape name (circle or rectangle) and then asks the user for the necessary data for an object of that class. The program should create the object and display all its attributes.
The circle class .h and .cpp files as well as the original driver function will be supplied. You are to provide the .h and .cpp files for the new color class and the modified driver function as well as the .h and .cpp files for the rectangle class and the client program that uses all three classes.
color.h
Code:
//color.h
//Color class definition
#include "stdafx.h"
#ifndef COLOR_H
[Code].....
View 3 Replies
View Related
Nov 18, 2013
I am unable to implement the insert function properly,every time i run the program i just get the first value and name,i am not getting other Id's and name.
Code:
"(Header File)"
#include <iostream>
#include <string>
using namespace std;
class node {
public:
int ID;
node (string StudentName, int IDNumber) {
[Code] ....
View 4 Replies
View Related
Nov 29, 2014
Implement a recursive function named void printBack(DoublyLinkedNode<T>* node) for the class DoublyLinkedCircularList which will print out the elements in the list from back to front. The function is initially called with the first node in the list. You may not make use of the previous(prev) links
This is my solution where I got 2 out of a possible 3 marks:
template<class T>
void DoublyLinkedCircularList<T> :: printBack(DoublyLinkedNode<T>* node) {
if(node->next == NULL) //Correct- 1 mark
return 0;
else
printBack(node->next); //Correct - 1 mark
cout << current-> element << " ";
}
View 3 Replies
View Related
Feb 14, 2014
I have an issue where I iterate through devices and make driver API calls. Unfortunately, these calls take too much time and they are interrupting my real-time scheduler. I have 12 cores, of which one is 100% and the others are < 1%.
I'd like to multi-thread this thing. So far, I've replaced:
for (DeviceIterator d = devices.begin(); d != devices.end(); ++d) {
d->Write(words, numwords);
}
with
void* ThreadedWrite(void* p) {
WritePackage* wp = (WritePackage*)p;
wp->device->Write(wp->words, wp->numwords);
delete[] wp->words;
delete wp;
[Code]...
My problem is that this didn't improve performance at all. The main thread still takes too long to execute. Is there something I need to do to prevent the main thread from blocking?
View 2 Replies
View Related
Oct 6, 2014
I have a class holding my data strcuture:
// Holding real time option data - should be thread safe
public class OptionRTHolder {
ConcurrentDictionary<double, Quates> book_calls;
ConcurrentDictionary<double, Quates> book_puts;
ConcurrentDictionary<double, List<Single_qoute>> transaction_calls;
ConcurrentDictionary<double, List<Single_qoute>> transaction_puts;
ConcurrentDictionary<double, int> volume_calls;
ConcurrentDictionary<double, int> volume_puts;
DateTime curr_time;
}
I get a stream of data messages, that come in order, each message carries a time and data. I have many threads in paralell pulling messages and in turn update the data strucutre as follows:
Quates and volume data are just overrun (new value overrun former values), also thier size and meta data is fixed (they don't grow post init).
Via the list I have a problem, I would want to lock only the list I am working on. so other lists can update in paralell, what I had in mind was to warp the list in order to warp the add/get calls to make it thread safety, this I think will achieve this goal and I would like to get some assertion from this forum if you may.
Here come my real problem, there are points in time I want to read/copy this structure, during this time I want to block all updating threads as I want to freeze structure in time, is that achiveable ? Idea that I had is to use something like aquire that will get a function (update/read) and a flag that will cause a lock when the read is on...something like that.
View 3 Replies
View Related
Apr 20, 2014
My problem: I want to make an application that is going to block the action of some files (It is anticheat files actually).
how do I make code to block the application's action?
Maybe there is another way to do that? I need to use Cheat Engine in game, and anticheat blocks it, so I thought if I'll block the activity of the anticheat it couldn't detect the Cheat Engine...
View 2 Replies
View Related
Mar 5, 2015
I have a thread that fetch elements from a std:queue, which are pushed from other threads. My question is how can I fetch elements from the queue in a blocking mode, what I mean is if there are no elements in the queue then the fetch call will block until at least one element is pushed. Of course I want to do it this way to avoid polling.
View 6 Replies
View Related
Mar 27, 2014
I am writing an application that needs to temporarily disable the Play/Pause button that appears on multimedia keyboards.
Normally, a key can be blocked quite easily by installing a low level keyboard hook (WH_KEYBOARD_LL) where the KeyboardProc intercepts the key (in this case VK_MEDIA_PLAY_PAUSE) and returns a "1" instead of calling CallNextHookEx. I have tried this with other keys (including the Windows key VK_LWIN) and this works perfectly. I also have no problems with this method under Windows 7 where all keys, including VK_MEDIA_PLAY_PAUSE get blocked.
Windows 8 is a different story. When my application has input focus, everything works as expected, meaning the VK_MEDIA_PLAY_PAUSE key gets blocked and no other application responds to it. However, when my application loses focus, my hook procedure gets called (this was verified by sending out a OutputDebugString) but other applications respond to key even though I return a "1". As soon as my app gets focus again, everything is block as it should.
After some investigation, I found that the multimedia keys not only generate keystrokes but also generate WM_APPCOMMAND messages so I added ShellProc (WH_SHELL) hook with the following hook procedure:
LRESULT __declspec(dllexport)__stdcall CALLBACK ShellProc(int nCode,WPARAM wParam,LPARAM lParam) {
// Do we have to handle this message?
if (nCode == HSHELL_APPCOMMAND) {
OutputDebugStringX(">>>>> HSHELL_APPCOMMAND");
[code]....
This procedure is only getting called when my app has input focus. Whenever I have input focus and return "1" the Play/Pause command gets blocked. As soon as I lose focus the procedure does not get called/hooked.
As I have mentioned, the code works for other keys, just not the multimedia keys.
Alternatively, another way of blocking the multimedia keyboards Play/Pause button?
View 6 Replies
View Related
Jul 30, 2013
im trying to read in 1 array and get 2 as outputs from 3 different functions.my read array is easy enough were im getting confused is how to read that array, separate it and take out only the parts i want and place them into a 2nd, then again a 3rd array.i have the following so far:
Code:
#include<stdlib.h>#include<stdio.h>
#include<unistd.h>
#define SIZE 10
}
[code]....
this compiles without a complaint, but when i go to run it no longer responds after taking the 10th element (well 9th if counting from 0).I think i have the if correct for the even odd section, but when i try to populate B or C array with the output of that if statement from A is were i think things are dying...
View 12 Replies
View Related
Dec 13, 2014
I am asking if there is a way to select a file
View 8 Replies
View Related
May 27, 2013
I just started on a project on c++ and I was wondering if it is possible to add a select option (where the c++ program requires the user to select an option) . I couldn't find this anywhere.
View 3 Replies
View Related
Dec 18, 2012
I understand including the comctrl32 lib and header. I know to init common controls. I can create a tab window and add tabs to it.
I just can't seem to grasp of how to tell when a specific tab has been selected. I just need to know what to look for with winproc.
View 2 Replies
View Related
Dec 18, 2014
I am trying to test my client-server socket program wherein the client connects to the server,client sends a message, server receives it and echo back to the client.So far, in the program server receives the message from the client, prints it BUT when it tries to send the message back to the client it shows an error.
sendto(): Invalid argument.I am new to socket programming.
Code:
//Server
#include<stdio.h> //printf
#include<string.h> //memset
#include<stdlib.h> //exit(0)
#include<netinet/in.h>
#include<sys/socket.h>
#define BUFLEN 512 //Max length of buffer
#define PORT 10003 //The port on which to listen for incoming data
}
[code]....
View 3 Replies
View Related
Oct 1, 2013
I've a text file with 9 words and each word is written in a line. for exemple this is the list :
APPLE
ORANGE
MOON
CAR
CANDY
...
END
I'm gonna choose the fourth line and select the word that is in this line and work on. I tried lot of way but no result.
View 7 Replies
View Related
Mar 13, 2015
I know that where I have the intIndex++ line is wrong. It's just going to stop at the last index and call it good, but I don't know how to make it stop at the matching name. The only examples I can ever seem to find use the foreach loop to print out a value, and I'm clearly just not understanding this enough to make it work for me.
Instructions are:
--Declare a variable to store the result of the search, int intIndex;
--Use an if statement with the Contains method to check if the name in the search box is in the queue.
--If Contains is true, initialize intIndex to zero and use a foreach to walk through queue, else display a message that the name is not in the list.
--If a match is found use intIndex to select the matching entry in listbox and display a message indicating the name was found. Be sure to increment intIndex each time through the loop.
private void btnSearchByName_Click(object sender, EventArgs e) {
//delcare int variable to use as the index for the list box
int intIndex;
//If Contains is true
if (cstrName.Contains(txtSearchName.Text))
[Code] .....
View 5 Replies
View Related
Mar 27, 2014
I am trying to select 3 questions randomly from a string array and create another array with the randomly selected questions then display them in labels.
As you can see in the code I have used Array.Clear method to remove the selected question from the array to prevent duplicate questions being selected. For some reason this is not working! The "Randomly" selected question is ALWAYS the 5th element [4] of the randomQuestions array and this element is duplicated for each iteration of the loop.
public void shuffleQuestions() {
string questionselected;
string[] randomQuestions = {
"What is the speed limit from the time you pass an Accident sign until you have passed the crash site?",
"What must you do at a red traffic light?",
"What is the maximum possible speed limit on the open road?",
[Code ....
View 12 Replies
View Related
Feb 10, 2015
this is my app interface as in attachment when i click an arrow it split the current selected window in arrow direction.
i want to know how to pass the current window to my button... i tried it using
Process[] processlist = Process.GetProcesses();
but it wont works
View 3 Replies
View Related
Sep 3, 2014
I have been working on my own custom web browser. If i insert a web browser in my tab control and name it i can easily just go webbrowser1.Navigate() in my button click to use the webbrowser methods.
I made a method CreateTab and it automatically adds a web browser to my tab along with a default web page.
My problem is selecting this webbrowser in other button clicks so i can call Home, Back, forward, etc.
Here is me method for creating a tab.
private void CreateTabItem()
{ //create a new tab
TabItem item = new TabItem();
item.Header = "Fitness" + i ;
WebBrowser browser = new WebBrowser();
//browser.Name = "Website";
[Code] ....
View 1 Replies
View Related
Mar 14, 2014
I'm having issues with selecting the next item in sequence in a combobox dropdown. The dropdown consists of letters A-Z and there is a timer that I have running to change the letter every x minutes. What I need to do is if, for example, letter A is selected, when the timer goes off, it will change to letter B, etc. If it's at letter Z, it needs to go back to the first item, letter A.
letterCode.SelectedIndex = letterCode.SelectedIndex + 1;
if (letterCode.SelectedIndex >= 26)
{
letterCode.SelectedIndex += 0;
}
I have the above, but I keep getting an error:
InvalidArgument=Value of '26' is not valid for 'SelectedIndex'.
how to get this working (letter changing logic block).
View 8 Replies
View Related
Jan 29, 2014
I'm attempting to write a little UDP socket library in c++ on linux so a user can just create a new instance of a UDPSocket class, specify destination ip and port, and just connect. Then the user should be able to call send() or receive() in any order they want.. and here I encounter a little problem..
Most of the tutorials for udp socket sending out there include a bind() call when you create your "server" that is supposed to receive data, but the code that send data does not need one. Because I also want my library to support unicast/broadcast/multicast, I have read that I need to set the socket option SO_REUSEADDR on my sockets (since multiple sockets will need to be connected to same destination IP/port for broadcast/multicast)
My question is.. do I need to create 2 socket handles per "UDPSocke in order to make this work? One for sending and one for receiving data? In my code when I try to work with only 1 socket, it is only able to receive stuff from itself on unicast.. Or should I just remove the SO_REUSEADDR when in unicast mode, then try to bind with both sockets, accept that the bind will only work on the 1st socket, and take it from there?
View 1 Replies
View Related