PDA

View Full Version : error with GCC



nima0102
چهارشنبه 30 آبان 1386, 22:28 عصر
با سلام
موقع کامپایل کد زیر با gcc در لینوکس error یه چند تا error میده
ممنون میشم اگه دوستان راهنمایی کنن
با تشکر




include <sys/socket.h>

#include <arpa/inet.h>
#include <stdio.h>
#include <unistd.h>
#include <time.h>
#include <string.h>
#define MAX_BUFFER 128
#define DAYTIME_SERVER_PORT 13

int main ( )
{
int connectionFd, in;
struct sockaddr_in servaddr;
char timebuffer[MAX_BUFFER+1];

connectionFd = socket(AF_INET, SOCK_STREAM, 0);

memset(&servaddr, 0, sizeof(servaddr));
servaddr.sin_family = AF_INET;
servaddr.sin_port = htons(DAYTIME_SERVER_PORT);

servaddr.sin_addr.s_addr = inet_addr("127.0.0.1");

connect(connectionFd, (struct sockaddr_in *)&servaddr,
sizeof(servaddr));

while ( (in = read(connectionFd,
timebuffer, MAX_BUFFER)) > 0) {
timebuffer[in] = 0;
printf("\n%s", timebuffer);
}

close(connectionFd);

return(0);
}


related error...

g++ -o client client.cpp
client.cpp: In function `int main()':
client.cpp:25: error: cannot convert `sockaddr_in*' to `const sockaddr*' for a\
rgument `2' to `int connect(int, const sockaddr*, socklen_t)'

molla652003
جمعه 02 آذر 1386, 00:06 صبح
connect(connectionFd, (struct sockaddr_in *)&servaddr

جای & رو اشتباه گذاشتی , فکر کنم

nima0102
جمعه 02 آذر 1386, 19:48 عصر
خوب ممنون میشم اگه درستشو بگین
با تشکر

Nima_NF
جمعه 02 آذر 1386, 23:19 عصر
اشتباه شما در تبدیل صریح آرگومان دوم شماست ، کد را به (* struct sockaddr) باید تغییر دهید که اشتبا ها به sockaddr_in نوشته اید.



connect(connectionFd, (struct sockaddr *) &servaddr,
sizeof(servaddr));