В C, я пытаюсь подключиться к серверу с помощью следующей функции:Почему мой вызов connect() не удается?
int clientConnect() {
//1. Set up connection address and port
char *ipAddress = SMSA_DEFAULT_IP;
int port = SMSA_DEFAULT_PORT;
//1a. Set up a sockaddr_in struct as described in lecture
struct sockaddr_in caddr;
caddr.sin_family = AF_INET;
caddr.sin_addr.s_addr = htonl(SMSA_DEFAULT_IP);
caddr.sin_port = htons(port);
//2. Create a socket
server_socket = socket(PF_INET, SOCK_STREAM, 0);
if(server_socket == -1)
{
logMessage(1, "There was an error creating a socket in clientConnect()");
return -1;
}
//3. Connect
if(connect(server_socket, (const struct sockaddr *)&caddr, sizeof(struct sockaddr)) == -1)
{
logMessage(1, "There was an error connecting in clientConnect()");\
return -1;
}
logMessage(2, "The connection was made!");
return 0;}
Когда эта функция вызывается, я получаю сообщение в моем журнале There was an error connecting in clientConnect()
. Это мой первый раз, когда я делаю сетевое программирование с помощью C, поэтому я подозреваю, что у меня что-то не хватает.
Проверить значение 'errno' (или используйте' PError() '), если системный вызов (например,' подключения() ') терпит неудачу. - Могло быть много причин: неправильный IP-адрес, сервер не отвечает, ... –
Здесь мораль. Когда вы получите сообщение об ошибке, запишите ошибку *, а не только текст вашего собственного проекта. Ваш собственный текст не может вам ничего сказать, кроме того, что что-то пошло не так. Действительная ошибка может. – EJP
@Martin R Спасибо за подсказку errno, очень полезно – Mike