Ich verwende diesen Befehl zu kompilieren:"kein Newline am Ende der Datei" C
gcc –Werror –std=c99 client.c –o client
Code:
#include <string.h>
#include <stdio.h>
#include <strings.h>
#include <stdlib.h>
#include <unistd.h>
#include <netdb.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#define BUFFER_SIZE 1000
#define PORT_NUM 8888
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[BUFFER_SIZE];
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,(struct sockaddr *)&serv_addr,sizeof(serv_addr)) < 0)
error("ERROR connecting");
while (1)
{
bzero(buffer, BUFFER_SIZE);
fgets(buffer, BUFFER_SIZE, stdin);
if((strncmp(buffer,"close",5) == 0))
break;
printf("Please enter the message: ");
bzero(buffer, BUFFER_SIZE);
n = write(sockfd,buffer,strlen(buffer));
if (n < 0)
error("ERROR writing to socket");
bzero(buffer, BUFFER_SIZE);
n = read(sockfd,buffer, BUFFER_SIZE-1);
if (n < 0)
error("ERROR reading from socket");
printf("%s\n",buffer);
}
close(sockfd);
return 0;
}
Der Versuch, es in einer Shell auf VM whos OS zu kompilieren ist Linux Dieser Fehler macht mich verrückt, ich verstehe nicht, was zu tun ist, um dies zu beheben. Ich dachte, dass die Datei client.c beschädigt ist, also habe ich kopiert und in eine neue .c-Datei eingefügt. Als das fehlschlug, schrieb ich es von 0 und bekam immer noch diesen Fehler.
Vielen Dank im Voraus!
Haben Sie versucht, den Ratschlag zu befolgen und einen Zeilenumbruch am Ende der Datei hinzuzufügen? – Olaf
Ich habe die bearbeitete Datei nicht in das freigegebene Verzeichnis verschoben. Ich habe die gleiche Datei kompiliert. Aaaaaaaaargh! –