Sites of the week

ads ads ads ads

Named Pipes

Posted by admin | Internet, Сеть | Четверг 7 Июнь 2007 10:41

Именованные каналы (Named Pipes) - это объекты ядра, являющиеся средством межпроцессной коммуникации между сервером канала и одним или несколькими клиентами канала.

далее...

Клиент на пайпах (поименованные каналы Named Pipes)

Posted by admin | Сеть | Четверг 7 Июнь 2007 10:28

Данный код реализует клиентское приложения по отправке сообщений о сети по именованным каналам.

 
#include <windows.h>
#include <stdio.h>
#define BUFSIZE 1024
#define PIPE_TIMEOUT 5000
 
int main()
{
 
HANDLE hFile;
BOOL flg;
DWORD dwWrite;
char szPipeUpdate[200];
hFile = CreateFile("\\\\.\\pipe\\SamplePipe", GENERIC_WRITE,
0, NULL, OPEN_EXISTING,
0, NULL);
 
strcpy(szPipeUpdate,"Data from Named Pipe client for createnamedpipe");
if(hFile == INVALID_HANDLE_VALUE)
{
printf("CreateFile failed for Named Pipe client\n" );
}
else
{
flg = WriteFile(hFile, szPipeUpdate, strlen(szPipeUpdate), &dwWrite, NULL);
if (FALSE == flg)
{
printf("WriteFile failed for Named Pipe client\n");
}
else
{
printf("WriteFile succeeded for Named Pipe client\n");
}
CloseHandle(hFile);
}
 
}

Сервер на пайпах (поименованные каналы, Named Pipes)

Posted by admin | Сеть | Четверг 7 Июнь 2007 10:27

Представляю Вашему вниманию пример сервера на поименовых каналах (Named Pipes).

Данная программа создает поименованный канал и начинает принимать сообщения из сети и выводить их.

 
#include <windows.h>
#include <stdio.h>
#define BUFSIZE 1024
#define PIPE_TIMEOUT 5000
 
int main()
{
 
BOOL fConnected;
LPTSTR lpszPipename = "\\\\.\\pipe\\SamplePipe";
CHAR chRequest[BUFSIZE];
DWORD cbBytesRead;
BOOL fSuccess;
HANDLE hPipe;
 
 
hPipe = CreateNamedPipe ( lpszPipename,
PIPE_ACCESS_DUPLEX, // read/write access
PIPE_TYPE_MESSAGE | // message type pipe
PIPE_READMODE_MESSAGE | // message-read mode
PIPE_WAIT, // blocking mode
PIPE_UNLIMITED_INSTANCES, // max. instances
BUFSIZE, // output buffer size
BUFSIZE, // input buffer size
PIPE_TIMEOUT, // client time-out
NULL); // no security attribute
 
if (hPipe == INVALID_HANDLE_VALUE)
return true;
 
for (;;)
{
// Trying connectnamedpipe in sample for CreateNamedPipe
// Wait for the client to connect; if it succeeds,
// the function returns a nonzero value. If the function returns
// zero, GetLastError returns ERROR_PIPE_CONNECTED.
 
fConnected = ConnectNamedPipe(hPipe, NULL) ?
TRUE : (GetLastError() == ERROR_PIPE_CONNECTED);
 
if (fConnected)
{
fSuccess = ReadFile (hPipe, // handle to pipe
chRequest, // buffer to receive data
BUFSIZE, // size of buffer
&cbBytesRead, // number of bytes read
NULL); // not overlapped I/O
 
chRequest[cbBytesRead] = '\0';
printf("Data Received: %s\n",chRequest);
 
if (! fSuccess || cbBytesRead == 0)
break;
 
FlushFileBuffers(hPipe);
DisconnectNamedPipe(hPipe);
}
else
// The client could not connect in the CreateNamedPipe sample, so close the pipe.
CloseHandle(hPipe);
}
CloseHandle(hPipe);
return 1;
 
}
 
//End of sample using CreateNamedPipe

ResumeThread

Posted by admin | WinAPI, Windows, Потоки | Четверг 7 Июнь 2007 08:50

Даная функция позволяет возобновлять выполнение задачи(потока).

 
DWORD ResumeThread
(
HANDLE hThread        // указатель на поток
);

SuspendThread

Posted by admin | WinAPI, Windows, Потоки | Четверг 7 Июнь 2007 08:50

Даная функция позволяет приостанавливать выполнение задачи(потока).

 
DWORD SuspendThread
(
HANDLE hThread        // указатель на поток
);

Как устновить приоритет потоку

Posted by admin | News | Четверг 7 Июнь 2007 08:42

Функция SetThreadPriority устанавливает значение приоритета для заданного потока. Это значение, вместе с классом приоритета процесса потока, обуславливает базовый уровень приоритета потока.

далее...

Web 3.0 - Менеджеры знаний

Posted by admin | Web | Четверг 7 Июнь 2007 07:24

Поскольку все рекламные технологии являются «надстройкой» над технологиями коммуникации, первая часть моего доклада будет посвящена общим концепциям. А именно — тем проблемам, которые возникают в современных массовых интернет-сервисах, а также вариантам решения этих проблем.

  далее...

UNIX: Получение свободного места

Posted by admin | Unix | Среда 6 Июнь 2007 18:38

Чтобы узнать сколько свободно места на диске, необходимо набрать в командной строке:

[cc lang="bash"]

df -lah

Проверка e-mail на PHP

Posted by admin | PHP | Среда 30 Май 2007 15:33

Приведем функцию на PHP использующую регулярные выражения для проверки корректности e-mail:

[cc lang="php"]

function CheckEmail($email)
{

if(eregi('^([a-z0-9_]|\\-|\\.)+'.'@'.'(([a-z0-9_]|\\-)+\\.)+'.'[a-z0-9]{2,4}$', $email)):
{
return true;
};
else:
{
return false;
};endif;
}

Отправка файла по email на PHP

Posted by admin | PHP | Среда 30 Май 2007 15:30

Нижеследующий пример показывает как средствами PHP отправить по e-mail письмо с прикрепленным  нему файлом.

[cc lang="php"]

<?
// Функции. Можно вынести в дpугой файл.

class html_mime_mail {
var $headers;
var $multipart;
var $mime;
var $html;
var $parts = array();

function html_mime_mail($headers="") {
$this->headers=$headers;
}

function add_html($html="") {
$this->html.=$html;
}

function build_html($orig_boundary,$kod) {
$this->multipart.="--$orig_boundary\n";
if ($kod=="w" || $kod=="win" || $kod=="windows-1251") $kod="windows-1251";
else $kod="koi8-r";
$this->multipart.="Content-Type: text/html; charset=$kod\n";
$this->multipart.="BCC: del@ipo.spb.ru\n";
$this->multipart.="Content-Transfer-Encoding: Quot-Printed\n\n";
$this->multipart.="$this->html\n\n";
}

function add_attachment($path="", $name = "", $c_type="application/octet-stream") {
if (!file_exists($path.$name)) {
print "File $path.$name dosn't exist.";
return;
}
$fp=fopen($path.$name,"r");
if (!$fp) {
print "File $path.$name coudn't be read.";
return;
}
$file=fread($fp, filesize($path.$name));
fclose($fp);
$this->parts[]=array("body"=>$file, "name"=>$name,"c_type"=>$c_type);
}

function build_part($i) {
$message_part="";
$message_part.="Content-Type: ".$this->parts[$i]["c_type"];
if ($this->parts[$i]["name"]!="")
$message_part.="; name = \"".$this->parts[$i]["name"]."\"\n";
else
$message_part.="\n";
$message_part.="Content-Transfer-Encoding: base64\n";
$message_part.="Content-Disposition: attachment; filename = \"".
$this->parts[$i]["name"]."\"\n\n";
$message_part.=chunk_split(base64_encode($this->parts[$i]["body"]))."\n";
return $message_part;
}

function build_message($kod) {
$boundary="=_".md5(uniqid(time()));
$this->headers.="MIME-Version: 1.0\n";
$this->headers.="Content-Type: multipart/mixed; boundary=\"$boundary\"\n";
$this->multipart="";
$this->multipart.="This is a MIME encoded message.\n\n";
$this->build_html($boundary,$kod);
for ($i=(count($this->parts)-1); $i>=0; $i--)
$this->multipart.="--$boundary\n".$this->build_part($i);
$this->mime = "$this->multipart--$boundary--\n";
}

function send($server, $to, $from, $subject="", $headers="") {

$headers="To: $to\nFrom: $from\nSubject: $subject\nX-Mailer: The Mouse!\n$headers";
$fp = fsockopen($server, 25, &$errno, &$errstr, 30);
if (!$fp)
die("Server $server. Connection failed: $errno, $errstr");
fputs($fp,"HELO $server\n");
fputs($fp,"MAIL FROM: $from\n");
fputs($fp,"RCPT TO: $to\n");
fputs($fp,"DATA\n");
fputs($fp,$this->headers);
if (strlen($headers))
fputs($fp,"$headers\n");
fputs($fp,$this->mime);
fputs($fp,"\n.\nQUIT\n");
while(!feof($fp))
$resp.=fgets($fp,1024);
fclose($fp);
}
}

// *************************************************************************
//
//   В качестве аттача пpисоединяем html-письмо (открывается автоматически).
//   Второй аттач - некоторый файл из каталога.
//   Вот так вызывать все то, что написано выше:
//
// *************************************************************************

$mail=new html_mime_mail();
$mail->add_html("<html><body><center><h2>Пpивет!<br><br>".
"<br>Посылаю файл [/bin/ls] ...".
"</h2></center></body></html>");
$mail->add_attachment("sites.rar","");
$mail->build_message("win"); // если не "win", то кодиpовка koi8
$mail->send("smtp.mail.ru",
"komu@mail.ru",
"ot_kogo@mail.ru",
"Тема письма");

//
// После прихода письма качаем по ФТП оригинальный /bin/ls и сравниваем с
// импортированным из письма:
//
//    X:\temp>fc /b ls ls2
//    Сравнение файлов ls и LS2
//    FC: различия не найдены
//
//
// Внимание! Если у вас нет файла /bin/ls, то просто закомментируйте строку
// $mail->add_attachment("/bin/","ls"), чтобы программа не пыталась присоединить
// к письму неcуществующие файлы.
//

?>

Страница 5 из 8«12345678»