Итак, у меня есть базовые c знания в C, и я пытаюсь создать базовые c клиентские и серверные сокеты и получить сообщение от сервера к клиенту, но эта ошибка возникает, и я не уверен, почему.
Кроме того, мой компилятор выдает предупреждение о том, что 2-й аргумент recev, в данном случае, сообщение (addressOf), является несовместимым типом указателя, который, как я думал, был проблемой, но я не уверен, и нет Не знаю, как исправить.
Код сервера:
#include <stdio.h>
#include <stdlib.h>
#include <winsock2.h>
int main()
{
WSADATA wsa;
WSAStartup(MAKEWORD(2,2), &wsa);
//criando o socket
SOCKET server = socket(AF_INET, SOCK_STREAM, 0);
//endereçando o socket
struct sockaddr_in serveraddr;
serveraddr.sin_addr.s_addr = inet_addr("127.0.0.1");
serveraddr.sin_family = AF_INET;
serveraddr.sin_port = htons(80);
//fazendo a ligação do endereço ao socket
bind(server, (SOCKADDR *) &serveraddr, sizeof(serveraddr));
//ouvindo conexões
int resposta = SOCKET_ERROR;
while (resposta == SOCKET_ERROR)
{
resposta = listen(server, 5);
}
//aceitando conexões
accept(server, NULL, NULL);
//mandando dados
char mensagem[256] = "Ola vc ai.";
send(server, mensagem, sizeof(mensagem), 0);
closesocket(server);
return 0;
}
Код клиента:
#include <stdio.h>
#include <stdlib.h>
#include <winsock2.h>
int main()
{
WSADATA wsa;
WSAStartup(MAKEWORD(2,2), &wsa);
//criando o socket
SOCKET client = socket(AF_INET, SOCK_STREAM, 0);
//endereçando o socket
struct sockaddr_in clientaddr;
clientaddr.sin_addr.s_addr = inet_addr("127.0.0.1");
clientaddr.sin_family = AF_INET;
clientaddr.sin_port = htons(80);
//conectando o socket
connect(client, (SOCKADDR *) &clientaddr, sizeof(clientaddr));
//recebendo dados
char mensagem[256] = {0};
int result = recv(client, &mensagem, sizeof(mensagem), 0);
if (result == SOCKET_ERROR)
{
printf("Erro em receber a mensagem. %d", WSAGetLastError());
return 0;
}
printf("%s", mensagem);
closesocket(client);
return 0;
}