#include <string.h>
#include <stdlib.h>
#include <stdio.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <netdb.h> 

void error(char *msg)
{
    perror(msg);
    exit(0);
}

int main(int argc, char *argv[])
{
    int sockfd, portno, n;
    struct sockaddr_in serv_addr;
    struct hostent *server;

    char buffer[256];
    if (argc < 3) {
       fprintf(stderr,"usage %s hostname port\n", argv[0]);
       exit(0);
    }
    portno = atoi(argv[2]);
    sockfd = socket(AF_INET, SOCK_STREAM, 0);
    if (sockfd < 0) 
        error("ERROR opening socket");
    server = gethostbyname(argv[1]);
    if (server == NULL) {
        fprintf(stderr,"ERROR, no such host\n");
        exit(0);
    }
    bzero((char *) &serv_addr, sizeof(serv_addr));
    serv_addr.sin_family = AF_INET;
    bcopy((char *)server->h_addr, 
         (char *)&serv_addr.sin_addr.s_addr,
         server->h_length);
    serv_addr.sin_port = htons(portno);
    if (connect(sockfd,&serv_addr,sizeof(serv_addr)) < 0) 
        error("ERROR connecting");
    printf("Please enter the message: ");
    bzero(buffer,256);
    fgets(buffer,255,stdin);
    n = write(sockfd,buffer,strlen(buffer));
    if (n < 0) 
         error("ERROR writing to socket");
    bzero(buffer,256);
    n = read(sockfd,buffer,255);
    if (n < 0) 
         error("ERROR reading from socket");
    printf("%s\n",buffer);
    return 0;
}

client.c:41: warning: passing argument 2 of ‘connect’ from incompatible pointer type

how do I solve it?

Edited 3 Years Ago by mike_2000_17: Fixed formatting

Comments
>20 posts and still no code tags!!!

if you'd put CODE tags so we could READ it... oh i dunno, maybe we could see what LINE 41 is.

and "bzero"? holy early-1990's, batman.... do you not like "memset" for some reason?

.

Edited 3 Years Ago by happygeek: fixed formatting

on the one hand i probably complain too much. on the other hand, after a long day at work, i find this coding style with no whitespace, no indentions, no syntax, no nothing, to be unreadable in the most annoying way.

anyhow, sockaddr and sockaddr_in are two different structure types. try this: if (connect(sockfd,(struct sockaddr *)&serv_addr,sizeof(serv_addr)) < 0) .

on the one hand i probably complain too much. on the other hand, after a long day at work, i find this coding style with no whitespace, no indentions, no syntax, no nothing, to be unreadable in the most annoying way.

anyhow, sockaddr and sockaddr_in are two different structure types. try this: if (connect(sockfd,(struct sockaddr *)&serv_addr,sizeof(serv_addr)) < 0) .

I"m being picky but this should be

connect(sockfd,(const struct sockaddr *)&serv_addr,sizeof(serv_addr)) < 0)
This article has been dead for over six months. Start a new discussion instead.