Differences
This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision | ||
workshop:sockets [2010-09-29 19:57] equinox |
workshop:sockets [2010-09-30 23:23] equinox |
||
---|---|---|---|
Line 1: | Line 1: | ||
- | ====== Vortrag/Workshop Einführung in Einführung Unix Socket Programmierung ====== | + | ====== Vortrag/Workshop Einführung in Unix Socket Programmierung ====== |
* by Christian Pointner | * by Christian Pointner | ||
+ | |||
Line 10: | Line 11: | ||
{{workshops:socket-examples.tar.gz|socket-examples.tar.gz}} | {{workshops:socket-examples.tar.gz|socket-examples.tar.gz}} | ||
+ | |||
+ | Es folgt noch der Code für einen sehr simplen Chat Server anhand dessen die Verwendung des Resolvers (DNS etc.) gezeigt wird. | ||
==== Beispiel: udpclient ==== | ==== Beispiel: udpclient ==== | ||
Line 61: | Line 64: | ||
} | } | ||
| | ||
- | struct sockaddr_in local_addr; | ||
- | memset((char *) &local_addr, 0, sizeof(local_addr)); | ||
- | local_addr.sin_family = AF_INET; | ||
- | local_addr.sin_port = htons(4321); | ||
- | local_addr.sin_addr.s_addr = htonl(INADDR_ANY); | ||
- | |||
- | if(bind(sock, (struct sockaddr *)&local_addr, sizeof(local_addr))==-1) { | ||
- | perror("bind() call failed"); | ||
- | exit(-1); | ||
- | } | ||
- | |||
struct sockaddr_in remote_addr; | struct sockaddr_in remote_addr; | ||
int alen, len; | int alen, len; | ||
Line 102: | Line 94: | ||
} | } | ||
</file> | </file> | ||
+ | |||
==== Beispiel: udpserver ==== | ==== Beispiel: udpserver ==== | ||
Line 310: | Line 303: | ||
#include <sys/types.h> | #include <sys/types.h> | ||
#include <sys/socket.h> | #include <sys/socket.h> | ||
- | |||
#include <arpa/inet.h> | #include <arpa/inet.h> | ||
+ | |||
+ | #include <sys/select.h> | ||
int main(int argc, char** argv) | int main(int argc, char** argv) | ||
Line 345: | Line 339: | ||
uint8_t buffer[1500]; | uint8_t buffer[1500]; | ||
struct sockaddr_in remote_addr; | struct sockaddr_in remote_addr; | ||
- | int alen, len; | + | memset (&remote_addr, 0, sizeof(remote_addr)); |
+ | int len, alen=sizeof(remote_addr); | ||
for (;;) { | for (;;) { | ||
memcpy(&tmpfds, &readfds, sizeof(tmpfds)); | memcpy(&tmpfds, &readfds, sizeof(tmpfds)); |
realraum Graz, Brockmanngasse 15, 8010 Graz, realraum - Verein für Technik in Kultur und Gesellschaft