Search unanswered questions...
Enter a question here...
Search: All sources Community Q&A Reference topics

Write a Multi-user chat server and client?

//Get and display distributed message
#include <sys/types.h> // for type
#include <sys/socket.h> // for socket API
#include <netinet/in.h> // for address
#include <arpa/inet.h> // for sockaddr_in
#include <stdio.h> // for printf()
#include <stdlib.h> // for atoi()
#include <string.h> // for strlen()
#include <unistd.h> // for close()
////////////////////////////////////////////
char *multiHostAddress = "239.255.10.10";

void getEcho (int sock)
{
struct sockaddr_in read_EP;
int stop = -1;
char *msg;

printf ("Waiting for message... \n");
while (stop < 0)
{
msg = (char *)recvfromDST (&read_EP, sock);
if (msg != NULL)
printf ("%s==>%s\n",inet_ntoa(read_EP.sin_addr),msg);
else
stop = 0;
}
}
////////////////////////////////////////////
int main(int argc, char **argv)
{
int sockMulti;
int readPort;
struct sockaddr_in EP_multi;
struct ip_mreq request;
unsigned char TTL=3;

//-------------
int MC_socket;
struct sockaddr_in server_EP, sender_EP;
char msg [60];
char *readmsg;
int port;
int stop = 0;
//--------------


//--------------
if (argc != 4)
{
IO_error(1,"Need host, send port and receive port.(e.g localhost 9000 9001)");
}
//--------------

else
{

//-----------------------------
//Send msg to server
port = atoi (argv[2]);
printf ("TCP Client to send message to Server %s at Port %d \n", argv[1], port);
setHostByName (&server_EP, argv[1], port);
MC_socket= sockTCP_create();
sock_connect(MC_socket, &server_EP);

while (stop == 0)
{

printf ("Enter message -without space- to send or 'QUIT' \n");
printf ("or 'SerEnd$$' to stop server: ");
//Read msg from user
scanf ("%s", msg);
//Send msg to server
sendtoDST (sender_EP, MC_socket, msg);
printf ("Message %s sent \n", msg);
stop = (strncmp (msg, "QUIT", 4) == 0);
if (stop == 0)
{
stop = (strncmp (msg, "SerEnd$$", 8) == 0);
}

//Receive msg from server

readPort = atoi (argv[3]);
printf ("Multicasting receiver at ports %d \n", readPort);

//Initialisation
sockMulti = sockUDP_create();
sockUDP_reuse (sockMulti);
setHostByAddr (&EP_multi, "any", readPort);
sock_bind (sockMulti, readPort);
sockUDP_join (sockMulti, multiHostAddress,&request);

//Use service
getEcho (sockMulti);

//Finalisation
sockUDP_drop (sockMulti, request);
close(sockMulti);

//----------------------------------
}
sock_shutdown(MC_socket, 1);
readmsg = NULL;
while (readmsg != NULL)
readmsg = (char *)readMessage(MC_socket);

//-----------------------------------

}
}

Improve Answer Discuss the question "Write a Multi-user chat server and client?" Click here to register and get updates when this answer is edited. Share on Facebook Share on Twitter

First answer by ID1975788365. Last edit by ID1975788365. Question popularity: 1 [recommend question].

Answers.com > Wiki Answers > Categories > Technology > Computers > Computer Networking > Write a Multi-user chat server and client?

Our contributors said this page should be displayed for the questions below. (Where do these come from)
If any of these are not a genuine rephrasing of the question, please help out and edit these alternates.
Define a Server-Multi User?  How do you use multi client on endless online?  Server invisible and client to client chatting?  Cases in which client and server both are multi threaded?