From 4db081cacf5e5d9f45931396b1477ef03570f7c7 Mon Sep 17 00:00:00 2001 From: "Leandro A. F. Pereira" Date: Sun, 15 Oct 2006 14:18:58 +0000 Subject: Add hard disk temperature monitor --- hardinfo2/socket.c | 81 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 81 insertions(+) create mode 100644 hardinfo2/socket.c (limited to 'hardinfo2/socket.c') 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 + * + * 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 +#include +#include +#include +#include +#include +#include +#include +#include + +#include + +#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); +} -- cgit v1.2.3