Небольшое приложенице на Си для Unix систем. Прекрасно взаимодействует с приложениями на основе WinSock (Win32 платформы). Но все же работа сокетов на Unix и Win32 платформах требует аккуратности и внимательности. Отличия-то имеются!
// Содержит прототипы функций библиотеки Socket API
#include <sys/socket.h>
// Содержит объявления стандартных системных типов данных
#include <sys/types.h>
// Содержит объявления дополнительных типов данных
#include <resolv.h>
// Для вызова стандартных низкоуровневых функций ввода-вывода для приема и передачи данных
#include <unistd.h>
// Для работы со строками
#include <stdio.h>
// Номер порта для соединения с сервером
#define PORT_TIME 80
// Размер буфера
#define MAXBUF 1024
void main () {
// Объявляем дескриптор сокета sd
int sd;
// Адрес сервера
char *host = "192.168.0.10";
// Создаем буфер
char buffer[MAXBUF];
// Отправляемое на сервер сообщение
char *sendbuf = "Hello mister tester. I am glad to see you.";
// Создание структуры для функции connect()
struct sockaddr_in dest;
// Системный вызов сокета. По-сути инициализация канала связи
// domain = PF_INET, type = SOCK_STREAM, protocol = 0
// int socket(int domain, int type, int protocol);
// Вызов протокола TCP
// В sd помещается дескриптор сокета
sd = socket(PF_INET, SOCK_STREAM, 0);
// Обнуляем структуру
bzero(&dest, sizeof(dest));
// Выбираем протокол
dest.sin_family = AF_INET;
// Функции htons() и inet_aton() выполняют преобразования типов данных
// Выбираем порт
dest.sin_port = htons(PORT_TIME);
// Задаем адрес
inet_aton(host, &dest.sin_addr);
// Подключаемся к серверу
if (connect(sd, &dest, sizeof(dest)) != 0) {
printf("connect() filed");
}
// Заносим сообщение в буфер
//sprintf(buffer, "%s\n", sendbuf);
// Отправляем на сервер данные в буфере
//send(sd, buffer, strlen(bufer), 0);
send(sd, sendbuf, strlen(sendbuf), 0);
// Обнуляем буфер; для приема ответа от сервера
bzero(buffer, MAXBUF);
// Принимаем ответ сервера
recv(sd, buffer, MAXBUF-1, 0);
// Выводим на консоль содержимое ответа
printf("%s", buffer);
// Закрываем сокет
close(sd);
}
Good luck, friends :)