C :: Using Select Function In Multiuser Chat Over TCP/IP
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.
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;
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):
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...
My program allows a server and a client to chat over a socket. Currently I have to wait for one of them to type a message and press enter, before a message from the other person can be received.
Is there a simple way for messages to be received instantly - but not disturb any message that is being typed in?
I want to have a multi user chat over TCP/IP. I already have the code for both the server and the client and so far I am able to send messages from the client to the server. Now I want to make it a multi user chat. I am executing the codes using Visual studio's Command prompt(not Windows Command Prompt). I have read somewhere that we have to use select() function.
In my program, after menu when he selects a choice, next display of menu wait the termination of the selected thread. while i want to show menu right after when a menu is selected.
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:
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...
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.
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))
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?",
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";
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.
#include <iostream> #include <ctime> #include <cstdlib> //This program prompts the user to select a number between 2 and 12 //computer throws two dices //player win if selected number matches the sum of the two dices thrown by computer
I am having trouble getting values of a dictionary to display in a label and radio button text after the dictionary key is randomly selected.
I first created a class called TheoryQuestions and created a new instance of the class for each dictionary entry. Each entry contains strings for Question, RadioButton Text(x4), and Correct Answer.
The random generator is actually selecting a random number as I can display the generated number in a label. The problem is that the dictionary string values held in the dictionary position represented by the random number are not being displayed.
Here is my TheoryQuestion Class
public class TheoryQuestion { bool BeenAsked = false; public string Question { get; set; }
[Code] .....
Its probably some mistake I have made but I just can't see it.
I don't understand when I'm only requesting a specific column on a unique row in MySQL that I'm being returned with data from all columns of that row.
My Select Statement - "select article from post where idpost=" + strIDpost + ";"
I should get: |--- article -----| "some article text"
Instead I get: |-idpost-|-title-|---- article------| 1 title some article text
If I run the command directly to the database I get the results I'm looking for, but somehow while running the application, the program is managing to pull the entire row.
I'm using C# on a webform in Visual Studio '13. Here's my Code:
I have a listbox that retrieves a bunch of values. I'm able to selectAll, Select None and Select Individual items. I'm not able to search the ListBox and select based on String value.
I have tried creating a for and if loop, but it will only select a single item (first item) in my ListBox.
private void btnSelectCAD_Click(object sender, EventArgs e) { // Find CAD Line Patterns that Begin with IMPORT: string mySearchString = "IMPORT"; // Search Listbox starting from index -1: int index = lstLinePatterns.FindString(mySearchString, -1);
I have created a generic array-like template to create arrays of different types. Now I need to get user input from a menu about which type of array they are building. I tried having the user enter a number and using that number to pick a string from an array of constant strings. But pretty obviously, that threw a type conversion error. Is there a way to convert the literal string of a type into it's type or refer to a type directly.
Here is the code I need to fit a type into at runtime:
I'm implementing an normal_distribution to select objects on a vector. The thing is I can't use values greater then 1 or less then -1. Here is what could be done:
The question is if the distribution would loose it's power to be a normal distribution, because some of the gerated numbers wouldn't be used. Any way to set ranges for the distribution?