Думаю в скором будущем появиться новая программа, относительно новая, хочу сделать нечто похожее на терминал кпк или ремотадмин, чтобы можно было управлять с кпк большим братом.
Суть идеи состоит в том чтобы можно было управлять мышкой и клавой с маленького брата, большим.
На экран кпк приходит картинка экрана с монитора, плюс эту картинку можно маштабировать. Очень удобно смотреть фильмы, только со звуком еще пока не знаю как поступить.
Все это дело будет приходить через tcp/ip протокол, так что можно будет подключиться по вафле и юзать, еще будет удобно рисовать стилусом, так как мышкой рисовать не очень удобно.
Часть этой идеи мне подкинул мой друг Вахрушев Илья, так что спасибо тебе Илюха.
Выкладываю обработку Сокетов, все очень просто, разрабатывал на Lazarus`е:
unit TSock;
{$mode DELPHI}{$H+}
interface
uses
Classes, SysUtils, WinSock, Windows;
type
{ TSockServer }
TSockServer = class // Класс сокет сервера
WSADat : WSAData;
Sock,Client : TSocket;
private
public
ClientS: String;
function InitSock(Port:integer):integer;
function RecvData(Buf:pointer;Len:integer):integer;
function SendData(Buf:pointer;Len:integer):integer;
procedure CloseSock;
end;
{ TSockClient }
TSockClient = class
WSADat : WSAData;
Sock : TSocket;
private
public
ServerS: String;
function InitSock(IP:String;Port:integer):integer;
function RecvData(Buf:pointer;Len:integer):integer;
function SendData(Buf:pointer;Len:integer):integer;
procedure CloseSock;
end;
implementation
{ TSockServer }
function TSockServer.InitSock(Port: integer):integer;
var
sin : sockaddr_in;
begin
WSAStartup($0202,WSADat);
sin.sin_family := AF_INET;
sin.sin_addr.s_addr := INADDR_ANY;
sin.sin_port := htons(Port);
Sock := socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
bind(Sock, sin, sizeof(sin));
result:=listen(Sock, SOMAXCONN);
Client := accept(Sock, @sin, 0);
ClientS:=inet_ntoa(sin.sin_addr);
end;
function TSockServer.RecvData(Buf:pointer;Len:integer):integer;
begin
result:=recv(Client, Buf, len, 0);
end;
function TSockServer.SendData(Buf: pointer; Len: integer):integer;
begin
result:=send(Client, buf, len, 0);
end;
procedure TSockServer.CloseSock;
begin
closesocket(Sock);
closesocket(Client);
WSACleanup();
end;
{ TSockClient }
function TSockClient.InitSock(IP:String;Port: integer):integer;
var
sin : sockaddr_in;
begin
WSAStartup($0202,WSADat);
sin.sin_family := AF_INET;
sin.sin_addr.s_addr := inet_addr(PChar(IP));
sin.sin_port := htons(Port);
Sock := socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
result:=connect(Sock, sin, sizeof(sin));
ServerS:=inet_ntoa(sin.sin_addr);
end;
function TSockClient.RecvData(Buf: pointer; Len: integer): integer;
begin
result:=recv(Sock, Buf, len, 0);
end;
function TSockClient.SendData(Buf: pointer; Len: integer): integer;
begin
result:=send(Sock, Buf, len, 0);
end;
procedure TSockClient.CloseSock;
begin
closesocket(Sock);
WSACleanup();
end;
end.
Ну и исходники программ чата сервер и клиент.
http://dump.ru/files/o/o38666823/
четверг, 27 марта 2008 г.
Подписаться на:
Комментарии к сообщению (Atom)
Комментариев нет:
Отправить комментарий