我在客户端文件中有错误
bash-4.2# gcc -lm -pthread cliente.c -o cliente
cliente.c: In function ‘main’:
cliente.c:25:1: warning: incompatible implicit declaration of built-in function ‘memset’
[enabled by default]memset(&addr.sin_zero,0,sizeof(addr.sin_zero));
cliente.c:47:12: warning: incompatible implicit declaration of built-in function ‘strlen’ [enabled by default] mensagem[strlen(mensagem)-1] = '\0';
代码下方:
include stdio.h
include sys/types.h
include sys/socket.h
include netinet/in.h
include arpa/inet.h
include netdb.h
int main() {
int meu_socket;
struct sockaddr_in addr;
meu_socket = socket(AF_INET,SOCK_STREAM,0);
if (meu_socket == -1) {
printf("Erro ao criar o socket!\n");
return 1;
}
addr.sin_family = AF_INET;
addr.sin_port = htons(5555);
addr.sin_addr.s_addr = inet_addr("127.0.0.1");
memset(&addr.sin_zero,0,sizeof(addr.sin_zero));
printf("Tentando se conectar ao servidor...\n");
if (connect(meu_socket,(struct sockaddr*)&addr,sizeof(addr)) == -1) {
printf("Erro ao se conectar!\n");
return 1;
}
printf("Conectado!\n\n");
int recebidos, enviados;
char mensagem[256];
char resposta[256];
do {
/* O processo inverso é feito aqui. Como o servidor espera uma mensagem inicialmente, o cliente deverá fornecê-la */
printf("Cliente: ");
fgets(mensagem,256,stdin);
mensagem[strlen(mensagem)-1] = '\0';
enviados = send(meu_socket,mensagem,strlen(mensagem),0);
/* Após enviar a mensagem, espera-se a resposta do servidor */
recebidos = recv(meu_socket,resposta,256,0);
resposta[recebidos] = '\0';
printf("Servidor: %s\n",resposta);
} while(recebidos != -1 && enviados != -1);
close(meu_socket);
return 0;
}
答案 0 :(得分:1)
您需要添加:
#include <string.h>
string.h
是memset
和strlen
的原型所在。