Computing.Net > Forums > Programming > C Help needed

Computer Problems? Computing.Net has over 1,000,000 posts about all things technology related! Over 90% answered within 24 hours! Click here to start participating now! Also, be sure to check out the New User Guide.

C Help needed

Reply to Message Icon

Name: smithjohnny
Date: May 9, 2004 at 07:44:09 Pacific
OS: windows 2000
CPU/Ram: 512 1300
Comment:

i need to write a report on what this code does. this code is the client code and the coe at the bottom is the server code. networing isint one of my strongest subjects so would appreciate any help on what the code is doing. feel free to contact me by email if you wish.
CLIENT CODE

#include "easyio.h"
#include "sockets.c.h"

int main()
{

host_name server;
port_number port;
socket_id local_socket;
int ok,i,len;
socket_buffer data;
char testchar[128];
char login[6];
char passwd[10];

strwriteln("client ...");
strwriteln("please enter host server name");
strreadln(server);
strwriteln("please enter server port number");
port=intreadln();

local_socket = create_socket();
// ioctl(local_socket,FIONBIO,1);
strwrite("client: socket ");
intwrite(local_socket);
strwriteln(" created");

ok=connect_sockets(local_socket, server, port);

if (ok < 0)
{
strwriteln("failed to connect sockets");
}
else
{
//Socket IO Logic goes here

//strwriteln("client: connection made to server, now use service");

//strwrite("client: ");
//intwrite(len);
//strwriteln(" bytes of data recieved");

/*if(strcmp(data,"Login:") == 0) {
printf("data = login");
} else {
printf("it didn't work");
}*/

//Receive, collect and push userid
ok = read_from_socket(local_socket,&data);
if (ok < 0) { printf("ERROR READING LOGIN"); exit(1); }
printf("\n%s ", data);
strreadln(login);
write_to_socket(local_socket,login,strlen(login));

//Receive, collect and push passwd
ok = read_from_socket(local_socket,&data);
if (ok < 0) { printf("ERROR READING PASSWD"); exit(1); }
printf("%s ", data);
strreadln(passwd);
write_to_socket(local_socket,passwd,strlen(passwd));

//Receive results
ok = read_from_socket(local_socket,&data);
if (ok < 0) { printf("ERROR READING RESULTS"); exit(1); }
printf("\n %s\n", data);

}
close_socket(local_socket);
return 0;
}

SERVER CODE

#include "easyio.h"
#include "sockets.c.h"
#define TRUE 1
host_name client_host;
socket_id server_socket;


void serve_client(socket_id sock)
{
/*procedure to implement the service */

int ok;
char *message;
socket_buffer login;
socket_buffer passwd;

/* set up data to serve to client */
message="Login:";
write_to_socket(sock,message,strlen(message));
ok = read_from_socket(sock,login);
if (ok < 0) { printf("ERROR READING LOGIN"); exit(1); }
printf("Read Login as %s",login);

message="Password:";
write_to_socket(sock,message,strlen(message));
ok = read_from_socket(sock,passwd);
if (ok < 0) { printf("ERROR READING PASSWD"); exit(1); }
printf("Read Password as %s",passwd);

if (getAuthed(login,passwd)) {
message="Congratulations, your credentials have been verified. Goodbye.";
write_to_socket(sock,message,strlen(message));
printf("User verified, closing connection");
} else {
message="Sorry, you were not verified. Goodbye.";
write_to_socket(sock,message,strlen(message));
printf("User could not be verified, closing connection");
}

close_socket(sock);
}

void accept_clients()
{ int process;
socket_id new_socket;

/* look for and deal with clients */
while (TRUE)
{
new_socket = accept_connection(server_socket, client_host);
if (new_socket<0)
{
strwriteln("failed to accept a connection");
exit(1);
}
else
{ /* client connection accepted, now create service process */
strwrite("server: connection accepted from ");
strwriteln(client_host);
process = fork();
if (process == 0) /* child server process */
{
close_socket(server_socket);
serve_client(new_socket);
exit(0);
}
else
{ /*parent server process*/
close_socket(new_socket);
}
} /*client processed*/
} /*loop forever */
} /*accept & serve clients */

struct user {
char uid[7];
char passwd[10];
struct user *next;
};

FILE *myfile;
struct user *new;
struct user *head;

// getAuthed is our fancy function for Authorising logins
// it parses the linked list looking for matches, returning 1
// on a match and 0 on not found

int getAuthed(char* uname, char* pass) {
new = head;

// Parse our linked list and stop when we find our uid & pass!
while (new != NULL ) {
if (strcmp(new -> uid, uname) == 0 && strcmp(new -> passwd, pass) == 0) {
return 1;
}
new = new -> next;
}
return 0;
}


main() {

port_number port;
int ok;

char username[7];
char password[10];

myfile = fopen("auth.txt", "r");
port = 6060;

while (fscanf(myfile, "%s %s", username, password) != EOF) {
new = malloc(sizeof(struct user));
strcpy(new -> uid , username);
strcpy(new -> passwd , password);
new -> next = head;
head = new;
}
system("clear");
printf("\n### AUTHFILE READ IN -- LINKED LIST ALLOCATED ###\n");

//This is an example of running an AUTH check
if(getAuthed("jim", "Peaches")) {
printf("AUTHED");
} else {
printf("NOTAUTHED");
}

server_socket = create_socket();
strwrite("server: socket ");
intwrite(server_socket);
strwriteln(" created, trying to bind name ...");
ok=bind_socket(server_socket, port);
if (ok < 0)
{
strwrite("failed to bind name to socket(ok =");
intwriteln(ok);
}
else
{
strwriteln("server: name bound to socket, now listen ...");
strwriteln("### READY TO SERVE CONNECTIONS ###");
listen(server_socket,5);
accept_clients();
}
}




Sponsored Link
Ads by Google

Response Number 1
Name: Don Arnett
Date: May 9, 2004 at 10:28:49 Pacific
Reply:

Sounds to me like you need to get out a book and study a little bit.


0
Reply to Message Icon

Related Posts

See More







Post Locked

This post is quite old and has been locked from receiving new replies. Please create a new posting instead.


Go to Programming Forum Home


Sponsored links

Ads by Google


Results for: C Help needed

C++ vs Pascal help needed www.computing.net/answers/programming/c-vs-pascal-help-needed/11150.html

C++ help needed www.computing.net/answers/programming/c-help-needed/2816.html

C help needed. www.computing.net/answers/programming/c-help-needed/9639.html