Информация сайта компьютерной безопасности <<< Hack Style >>> Ну я думаю все знают что такое сокет и с чем его едят… и по этому тем кто еще не знает как же с ним работать и как его есть я сейчас и покажу : для создания сокета используется системный вызов socket sock = socket(протокол, тип, IPPROTO_TCP или 0 (что одно и тоже)); (левая часть является дескриптором для работы с сокетом так же может быть проверкой на ошибку) как протокол используется AF_INET те интернет протокол типы сокетов: SOCK_STREAM - тип пересылки для протокола TCP(его обычно и юзают) SOCK_DGRAM - а этот для UDP SOCK_RAW (сырой сокет) - этот тип должен быть хорошо описан тк он более гибок в использовании и для него нужна отдельная статья (TCP/UDP) пример создания сокета : sock=socket(AF_INET, SOCK_STREAM, 0); для привязки сокета к порту используется bind bind(sock, name,sizeof(name)); это надо например для прослушивания порта как в бэкдорах sock - это тот самый дескриптор и он будет почти везде по этому далее я его не описываю name это строка байт переменной длины, которая содержит все настройки (порт,тип связи итп) об этом далее... установить связь можно так error = connect(sock, serveraddr, sizeof(serveraddr)); serveraddr - структура содержащая адрес (ip) тип связи и порт (о структуре позже) если сокет не был связан с адресом то connect вызовет функцию bind а вот как научить слушать сокет error = listen(sock, length); length это максимальное количество запросов на установление связи те сколько клиентов может быть у сервера(тк сервер обычно и ждет коннекта) когда сервер получает запрос от клиента он создает новый сокет и связывает его с ассоциацией слушающему сокету: newsock = accept(sock, nill , nill); далее для работы с клиентом сервер использует дескриптор newsock... передача данных две функции read и write: write(sock, buf, sizeof(buf)); read(sock, buf, sizeof(buf)); где buf то что вы и хотите послать или то куда принять кусок памяти (send и recv) и (read и write) практически одинаковы только у первых еще есть аргумент флагов send(sock, buf, sizeof(buf), flags); recv(sock, buf, sizeof(buf), flags); могут быть указаны один или более флагов с помощью ненулевых значений как следующие: MSG_OOB - посылать/получать данные, характерные для сокетов типа stream MSG_PEEK - просматривать данные без чтения MSG_DONTROUTE - посылать данные без маршрутизации пакетов но мне это не надо и я пишу просто 0 или пользуюсь read или write так далее... как закрыть сокет closesocket(sock); это используется если сокет уже не получает данных те свободен ну а если сокет нужно освободить не дождавшись конца передачи данных то shutdown(Sock,num); и посля вызвать closesocket(Sock); где num это одно из 0 - если пользователь больше не желает читать данные 1 - если данные больше не будут посылаться 2 - если данные не будут ни посылаться ни получаться а вот сдесь то и все примерчики : объявление структуры сервера SOCKADDR_IN addr_Sock; //сама структура addr_Sock.sin_family = AF_INET;//инет коннектинг addr_Sock.sin_addr.s_addr = htonl(INADDR_ANY);//а INADDR_ANY значит что // клиент может иметь любой айпи адрес и если вы имеете постоянный то пишите его и кроме вас //больше ни кто не подконнектится addr_Sock.sin_port = htons(5000);//порт для прослушивания у меня 5000 далее для серва пишем SOCKET listet_Sock = socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);//создаем сокет bind(listet_Sock,(LPSOCKADDR)&addr_Sock, sizeof(struct sockaddr));//привязка listen(listet_Sock, 1);//слушаем SOCKET Sock = accept(listet_Sock,NULL,NULL);//ассоциируем //далее идет обработка дескриптора Sock а не listet_Sock while(TRUE){ //тут и пишем read write итп... ); shutdown(Sock,1);//отрубаем closesocket(Sock);//выходим для лучшего понимания смотрите мой архив... Хорошего кода вам ... Все права защищены ~< KAPMAH >~ www.HackStyle.narod.ru