Archiv für Juni, 2009

News des Tages

30 Jun

- Firefox 3.5 ist fertig und zum Download freigegeben
Die neuste Version des beliebten Browser steht zum Download bereit! Update empfohlen ;).

- Schwedische IT-Firma kauft The Pirate Bay
Die schwedische IT-Firma Global Gaming Factory hat angekündigt, die Website The Pirate Bay zum Preis von umgerechnet 5,5 Millionen Euro übernehmen zu wollen.

- Einheitliches Ladegerät für Handys
Die großen Hersteller (u.a. Nokia, Sony Ericsson, Apple) haben sich auf einen einheitlichen Anschluss für Ladegeräte geeinigt. Es wird Micro-USB werden. Schon ab 2010 soll es losgehen.

 

SEO Betrug in der Schweiz

30 Jun

Eine schon krasse Methode… Sowas sollte man echt nicht machen, vor allem kommt man damit ganz schnell in sehr negative Schlagzeilen, wie man hier sehen kann:

YouTube Preview Image

(via, via)

 

Minimaler TCP Server & TCP Client in C

29 Jun

Ich habe mal einen minimalen Server in C geschrieben, mit dem passenden Client dazu. Es gibt wirklich nur die grundlegende ASCII Kommunikation, kein Protokoll oder ähnliches. Natürlich läuft die Verbindung intern über TCP/IP etc. Es gibt jedoch kein Protokoll auf Netzwerk-Ebene 5.

Der Server:

#include <unistd.h>
#include <stdlib.h>
#include <stdio.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <strings.h>
#include <string.h>
#include <arpa/inet.h>
 
int main(void) {
	/* Socket erstellen - TCP, IPv4, keine Optionen */
	int lsd = socket(AF_INET, SOCK_STREAM, 0);
 
	/* IPv4, Port: 1111, jede IP-Adresse akzeptieren */
	struct sockaddr_in saddr;
	saddr.sin_family = AF_INET;
	saddr.sin_port = htons(1111);
	saddr.sin_addr.s_addr = htons(INADDR_ANY);
 
	/* Socket an Port binden */
	bind(lsd, (struct sockaddr*) &saddr, sizeof(saddr));
 
	/* Auf Socket horchen (Listen) */
	listen(lsd, 10);
 
	while(1) {
		/* Puffer und Strukturen anlegen */
		struct sockaddr_in clientaddr;
		char buffer[10];
		bzero(buffer, sizeof(buffer));
 
		/* Auf Verbindung warten, bei Verbindung Connected-Socket erstellen */
		socklen_t clen = sizeof(clientaddr);
		int csd = accept(lsd, (struct sockaddr*) &clientaddr, &clen);
 
		/* Vom Client lesen und ausgeben */
		int bytes = recv(csd, buffer, sizeof(buffer), 0);
		printf("Der Client hat folgenden String gesendet: %s\n", buffer);
		printf("Es wurden %d Bytes empfangen\n", bytes);
 
		/* Verbindung schließen */
		close(csd);
	}
 
	return EXIT_SUCCESS;
 
}

Der Client:

#include <stdio.h>
#include <stdlib.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <assert.h>
#include <string.h>
#include <unistd.h>
#include <netdb.h>
#include <arpa/inet.h>
 
int main(void) {
	/* Socket erstellen */
	int socks = socket(AF_INET, SOCK_STREAM, 0);
 
	/* Verbindungsziel festlegen, Port und IP-Adresse des Servers angeben */
	struct sockaddr_in serveraddr;
	bzero(&serveraddr, sizeof(serveraddr));
	inet_pton(AF_INET, "127.0.0.1", &serveraddr);
	serveraddr.sin_family = AF_INET;
	serveraddr.sin_port = htons(1111);
 
	/* Verbindung aufbauen */
	connect(socks, (struct sockaddr*) &serveraddr, sizeof(serveraddr));
 
	/* Puffer mit Text füllen */
	char buffer[5];
	strcpy(buffer, "test");
 
	/* "test" String an Server senden */
	int bytes = send(socks , buffer, sizeof(buffer), 0);
 
	/* Ausgabe was gesendet wurde */
	printf("Sende String: %s\n", buffer);
	printf("Es wurden %d Bytes gesendet\n", bytes);
 
	/* Verbindung beenden */
	close(socks);
 
	return EXIT_SUCCESS;
}

Die Ausgabe der beiden C Programmie sieht so aus:

VM-Ubuntu:~/Desktop$ gcc -Wall -o server TCPServer.c
VM-Ubuntu:~/Desktop$ gcc -Wall -o client TCPClient.c
VM-Ubuntu:~/Desktop$ ./server
Der Client hat folgenden String gesendet: test
Es wurden 5 Bytes empfangen

VM-Ubuntu:~/Desktop$ ./client
Sende String: test
Es wurden 5 Bytes gesendet

Das Ganze ist, wie man sieht, sehr minimalistisch gehalten, aber so kann man denke ich am besten verstehen was passiert und wie die Netzwerkprogrammierung in C funktioniert. Falls ihr die Programme selber kompilieren wollt, benötigt ihr den aktuellen gcc (oder ähnlichen C Compiler) und die passenden Bibliotheken (unter Ubuntu build-essentials installieren)!

 

“Ich kann C++ jetzt schon ziemlich gut…”

28 Jun

Ich mag die Community gutefrage.net ja schon alleine wegen der lustigen Fragen :D.

Image1

 

2012 – Der Film

27 Jun

2012 ist die Verfilmung des Science-Fiction-Romans 2012. Das Ende aller Zeiten (Originaltitel: In the Courts of the Sun) von Brian D’Amato. Der US-amerikanischer Katastrophenfilm unter der Regie von Roland Emmerich startet weltweit am 13. November 2009 und in Deutschland am 19. November 2009. In den Hauptrollen werden John Cusack, Amanda Peet, Danny Glover, Thandie Newton, Oliver Platt, Chiwetel Ejiofor und Woody Harrelson zu sehen sein.

Der Film basiert auf verschiedenen Hypothesen, nach denen im Jahr 2012 die Welt nach dem Ende der Langen Zählung des Maya-Kalenders untergehen soll. Das Ereignis soll am 21. Dezember 2012 eintreten. (Wiki)

YouTube Preview Image