diff options
author | Leandro A. F. Pereira <leandro@hardinfo.org> | 2006-10-15 14:18:58 +0000 |
---|---|---|
committer | Leandro A. F. Pereira <leandro@hardinfo.org> | 2006-10-15 14:18:58 +0000 |
commit | 4db081cacf5e5d9f45931396b1477ef03570f7c7 (patch) | |
tree | 8e8c7002001ff4b15c9e26ba26616fcefc29c6e2 /hardinfo2/socket.c | |
parent | 163dbca219f44b3e7a137a7c02474707b4d2bca6 (diff) |
Add hard disk temperature monitor
Diffstat (limited to 'hardinfo2/socket.c')
-rw-r--r-- | hardinfo2/socket.c | 81 |
1 files changed, 81 insertions, 0 deletions
diff --git a/hardinfo2/socket.c b/hardinfo2/socket.c new file mode 100644 index 00000000..4212c547 --- /dev/null +++ b/hardinfo2/socket.c @@ -0,0 +1,81 @@ +/* + * HardInfo - Displays System Information + * Copyright (C) 2003-2006 Leandro A. F. Pereira <leandro@linuxmag.com.br> + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, version 2. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#include <stdio.h> +#include <string.h> +#include <arpa/inet.h> +#include <errno.h> +#include <netdb.h> +#include <netinet/in.h> +#include <sys/socket.h> +#include <sys/types.h> +#include <unistd.h> + +#include <glib.h> + +#include "socket.h" + +Socket *sock_connect(gchar * host, gint port) +{ + struct sockaddr_in server; + Socket *s; + int sock; + + sock = socket(AF_INET, SOCK_STREAM, 0); + if (sock > 0) { + memset(&server, 0, sizeof(server)); + server.sin_family = AF_INET; + server.sin_addr.s_addr = inet_addr(host); + server.sin_port = htons(port); + + if (connect(sock, (struct sockaddr *) (void *) &server, sizeof(server)) < 0) { + return NULL; + } + + s = g_new0(Socket, 1); + s->host = g_strdup(host); + s->port = port; + s->sock = sock; + + return s; + } + + return NULL; +} + +int sock_write(Socket * s, gchar * str) +{ + return write(s->sock, str, strlen(str)); +} + +int sock_read(Socket * s, gchar * buffer, gint size) +{ + gint n; + + n = read(s->sock, buffer, size); + buffer[n] = '\0'; + + return n; +} + +void sock_close(Socket * s) +{ + close(s->sock); + g_free(s->host); + g_free(s); +} |