From 593ac1e25c2053f06cb1b7e29785a695d3c57ad3 Mon Sep 17 00:00:00 2001 From: oroborus Date: Fri, 14 Mar 2008 19:31:47 +0000 Subject: - podpora UDP git-svn-id: http://opensvn.csie.org/tuxanci_ng@15 0ee4d065-81f0-4d1e-b06c-ff20ad07cc3e --- src/udp.c | 26 +++++++++++++++++++++++++- 1 file changed, 25 insertions(+), 1 deletion(-) (limited to 'src/udp.c') diff --git a/src/udp.c b/src/udp.c index 72a7448..0f86dc6 100644 --- a/src/udp.c +++ b/src/udp.c @@ -8,6 +8,7 @@ #include #include #include +#include #define BUFSIZE 1000 @@ -29,6 +30,7 @@ sock_udp_t* newSockUdp() void destroySockUdp(sock_udp_t *p) { + assert( p != NULL ); free(p); } @@ -36,8 +38,12 @@ sock_udp_t* bindUdpSocket(int port) { sock_udp_t *new; + assert( port > 0 && port < 65535 ); + new = newSockUdp(); + assert( new != NULL ); + if( ( new->sock = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP) ) < 0 ) { fprintf(stderr, "nemozem obsadit sokcet !\n"); @@ -65,8 +71,13 @@ sock_udp_t* connectUdpSocket(char *address, int port) struct hostent *host; sock_udp_t *new; + assert( address != NULL ); + assert( port > 0 && port < 65536 ); + new = newSockUdp(); + assert( new != NULL ); + if( ( new->sock = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP) ) < 0 ) { fprintf(stderr, "nemozem sa pripojit na sokcet !\n"); @@ -87,6 +98,10 @@ int readUdpSocket(sock_udp_t *src, sock_udp_t *dst, void *address, int len) int addrlen; int size; + assert( src != NULL ); + assert( dst != NULL ); + assert( address != NULL ); + addrlen = sizeof(src->sockAddr); if( ( size = recvfrom(src->sock, address, len, 0, @@ -106,7 +121,11 @@ int writeUdpSocket(sock_udp_t *src, sock_udp_t *dst, void *address, int len) addrlen = sizeof(src->sockAddr); - if( ( size = sendto(src->sock, address, len, 0, + assert( src != NULL ); + assert( dst != NULL ); + assert( address != NULL ); + + if( ( size = sendto(src->sock, address, len, 0, (struct sockaddr *)&dst->sockAddr, (socklen_t)addrlen) ) < 0 ) { fprintf(stderr, "nemozem nacitat sokcet !\n"); @@ -118,11 +137,16 @@ int writeUdpSocket(sock_udp_t *src, sock_udp_t *dst, void *address, int len) void getSockUdpIp(sock_udp_t *p, char *str_ip) { + assert( p != NULL ); + assert( str_ip != NULL ); + strcpy(str_ip, inet_ntoa(p->sockAddr.sin_addr)); } void closeUdpSocket(sock_udp_t *p) { + assert( p != NULL ); + close(p->sock); destroySockUdp(p); } -- cgit v1.2.3