Kodewerx https://www.kodewerx.org/forum/ |
|
Need help with C codes https://www.kodewerx.org/forum/viewtopic.php?f=5&t=4004 |
Page 1 of 1 |
Author: | cloud [ Mon Aug 13, 2007 11:33 am ] |
Post subject: | Need help with C codes |
Here are my C codes: Code: /*************************************************************************** * Copyright (C) 2007 by Cloud * * cloud@laptop * * * * This program is free software; you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * * the Free Software Foundation; either version 2 of the License, or * * (at your option) any later version. * * * * This program is distributed in the hope that it will be useful, * * but WITHOUT ANY WARRANTY; without even the implied warranty of * * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * * GNU General Public License for more details. * * * * You should have received a copy of the GNU General Public License * * along with this program; if not, write to the * * Free Software Foundation, Inc., * * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * ***************************************************************************/ #ifdef HAVE_CONFIG_H #include <config.h> #endif #include <stdio.h> #include <stdlib.h> #include <sys/types.h> #include <sys/socket.h> #include <netinet/in.h> #include <string.h> #define MAX_BUFFER_SIZE 1024 #define MAX_CONNECTIONS 20 /** * Function declarations */ void error (char *); void makeServerSocket (char[] *, struct sockaddr_in &, struct sockaddr_in &, int &, int &, char &); void makeClientSocket (char[] *, struct sockaddr_in &, struct sockaddr_in &, int &, int &, char &); /** * */ int main(int argc, char *argv[]) { int socketType=0; int serverSocketFD=0; int clientSocketFD=0; int bytesRead=0; struct sockaddr_in client; struct sockaddr_in server; char buffer[MAX_BUFFER_SIZE]; printf("Socket v0.01\n\n"); /*if (sizeof(argv<1)) { printf("Usage: IP Address (xxx.xxx.xxx.xxx) Port Number (xxxxx)"); exit(1); }*/ printf("Select socket type (0=client, 1=Server)\n"); scanf("%d", &socketType); if (socketType) { printf("Server type socket selected.\n\n"); makeServerSocket(argv, server, client, serverSocketFD, clientSocketFD, buffer); while (1) { // make the server accecpt incoming messages clientSocketFD=accept(serverSocketFD, (struct sockaddr*) &client, sizeof(client)); printf("%s:%d connected.\n", inet_ntoa(client.sin_addr), inet_ntohs(client.sin_port)); // receive incoming message from the client recv(clientSocketFD, buffer, MAX_BUFFER_SIZE, 0); // check if client wanted to stop the connection if (*buffer=="quit") { close(serverSocketFD); close(clientSocketFD); } // send back anything that was send send(clientSocketFD, buffer, MAX_BUFFER_SIZE, 0); } } else { printf("Client type socket selected.\n\n"); makeClientSocket(argv, server, client, serverSocketFD, clientSocketFD, buffer); // send message to server printf("Enter message to send to server:\n"); scanf("%s", &buffer); printf("Sending %s to %s:%d\n", buffer, inet_ntoa(server.sin_addr), inet_ntohs(server.sin_port)); send(clientSocketFD, strcat(buffer, "\n"), sizeof(buffer), 0); // while there are data to be read do { bzero(buffer, MAX_BUFFER_SIZE); bytesRead=recv(clientSocketFD, buffer, MAX_BUFFER_SIZE, 0); printf("Incoming message from %s%d", inet_ntoa(server.sin_addr), inet_ntohs(server.sin_port), buffer); } while (bytesRead>0); // clean up close(clientSocketFD); } return EXIT_SUCCESS; } /** * */ void error(char *message) { perror(message); exit(1); } /** * */ void makeServerSocket (char[] *argv, struct sockaddr_in &server, struct sockaddr_in &client, int &serverSocketFD, int &clientSocketFD, char &buffer) { // create server socket if ((serverSocketFD=socket(AF_INET, STREAM, 0))<1) error("Can not create server socket.\n"); // set up socket connection bzero(&server, sizeof(&server)); server.sin_family=AF_NET; server.sin_addr.s_addr=INADDR_ANY; server.sin_port=hton(argv[1]); // bind the socket to a port if (bind(serverSocketFD, (struct *sockaddr)&server, sizeof(server))==0) error("Can not bind socket to port.\n"); // make the socket listen if (listen(serverSocketFD, MAX_CONNECTIONS)==0) error("Can not make socket listen to incoming messages.\n"); } /** * */ void makeClientSocket(char[] *argv, struct sockaddr_in &server, struct sockaddr_in &client, int &serverSocketFD, int &clientSocketFD, char &buffer) { // create client socket if ((clientSocketFD=socket(AF_INET, STREAM, 0) < 1)) error("Can not create client socket"); // set up server connection server.sin_family=AF_NET; server.sin_port=htons(argv[1]); if (inet_aton(argv[0], &server.sin_addr.s_addr)==0) error("Server IP address error.\n"); // connect the client to the server if (connect(clientSocketFD, (struct sockaddr*)&server, sizeof(server))!=0) error("Can not connect to the server.\n"); } These are the errors that I got when I try to compile my C program with GCC: Code: sockets.c:39: error: expected ‘;’, ‘,’ or ‘)’ before ‘*’ token sockets.c:40: error: expected ‘;’, ‘,’ or ‘)’ before ‘*’ token sockets.c: In function ‘main’: sockets.c:64: warning: passing argument 3 of ‘accept’ makes pointer from integer without a cast sockets.c:69: warning: comparison between pointer and integer sockets.c: At top level: sockets.c:107: error: expected ‘;’, ‘,’ or ‘)’ before ‘*’ token sockets.c:125: error: expected ‘;’, ‘,’ or ‘)’ before ‘*’ token Can anyone help me fix the errors in my C codes for me? |
Author: | dlong [ Mon Aug 13, 2007 2:51 pm ] |
Post subject: | Re: Need help with C codes |
I'm having trouble believing you actually wrote this. The majority of your errors is caused by the same mistake repeated, and is something rather basic. char[] * in the function prototypes should by char *[] |
Author: | cloud [ Tue Aug 14, 2007 12:33 pm ] |
Post subject: | Re: Need help with C codes |
dlong wrote: I'm having trouble believing you actually wrote this. The majority of your errors is caused by the same mistake repeated, and is something rather basic. char[] * in the function prototypes should by char *[] OK thanks Dlong that fixed some of the errors, but not all the errors. It seems that I can't declare the function prototypes like this: Code: void makeServerSocket (char[] *, struct sockaddr_in &, struct sockaddr_in &, int &, int &, char &); void makeClientSocket (char[] *, struct sockaddr_in &, struct sockaddr_in &, int &, int &, char &); Instead I have to declare it like this and it worked Code: void makeServerSocket (char *[], struct sockaddr_in *, struct sockaddr_in *, int, int, char);
void makeClientSocket (char *[], struct sockaddr_in *, struct sockaddr_in *, int, int, char); |
Page 1 of 1 | All times are UTC - 8 hours [ DST ] |
Powered by phpBB® Forum Software © phpBB Group https://www.phpbb.com/ |