c-uebungen/Assignment_028/solution/socket_client.c

64 lines
1.6 KiB
C
Raw Normal View History

2023-05-21 21:10:46 +02:00
/**
* Socket-Client programmieren.
*
* Schreiben Sie ein Programm, das sich per Socket mit einem
* Server unter der IP 127.0.0.1 und auf Port 8080 verbindet.
* Der Client schickt einen Namen zum Server und liest dann
* die Antwort des Servers und gibt diese auf stdout aus.
*/
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <unistd.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#define BUFFER_SIZE 1024
#define NAME "Thomas"
#define PORT 8080
#define HOST "127.0.0.1"
int main(int argc, char** argv) {
char buffer[BUFFER_SIZE];
struct sockaddr_in server_addr;
// Socket erstellen
int socket_fd = socket(AF_INET, SOCK_STREAM, 0);
if (socket_fd == -1) {
perror("Fehler beim Erstellen des Sockets");
exit(EXIT_FAILURE);
}
// Serveradresse und Portnummer konfigurieren
server_addr.sin_family = AF_INET;
server_addr.sin_port = htons(PORT);
server_addr.sin_addr.s_addr = inet_addr(HOST);
// Verbindung zum Server herstellen
if (connect(socket_fd, (struct sockaddr*)&server_addr, sizeof(server_addr)) == -1) {
perror("Fehler beim Verbinden mit dem Server");
exit(EXIT_FAILURE);
}
// Namen auf Socket schreiben
write(socket_fd, NAME, strlen(NAME) + 1);
// Daten vom Socket lesen
ssize_t bytes_read = read(socket_fd, buffer, BUFFER_SIZE);
if (bytes_read == -1) {
perror("Fehler beim Lesen vom Socket");
exit(EXIT_FAILURE);
}
// Daten auf stdout schreiben
write(1, buffer, bytes_read);
write(1, "\n", 1);
// Socket schließen
close(socket_fd);
return 0;
}