Главная Случайная страница Контакты | Мы поможем в написании вашей работы! | ||
|
#include <stdio.h>
#include <string.h>
#include <Winsock2.h> // стандартная библиотека сокетов
int main(int argc,char ** argv)
{ if(argc==1)// парсим параметры командкой строки
{ printf("Use nettest s|c [address ]\n");// маленький хелп
return 0;
}
bool bServ=true;// флаг на сервер, false значит клиент
char Address[50]="127.0.0.1";// адрес соедининия
char data[512]="лобуда всякая";// данные
if(argc>=3 && argv[1][0]=='c'){bServ=false;strcpy(Address,argv[2]);}
WSAData wsa;// стандартная виндовская инициализация сокетов
WSAStartup(MAKEWORD (2,0),&wsa);
SOCKET s=socket(PF_INET,SOCK_STREAM,0);// создаем сокет
sockaddr_in service;service.sin_family = AF_INET;
service.sin_addr.s_addr = inet_addr(Address);
service.sin_port = htons(39283);
if(bServ)// организация сервера
{ if (bind(s, (SOCKADDR*) &service, sizeof(service))!= SOCKET_ERROR)
{ listen(s, 1);
do{SOCKET AcceptSocket= SOCKET_ERROR;
while(AcceptSocket == SOCKET_ERROR)AcceptSocket = accept(s, NULL, NULL);
recv(AcceptSocket,data,512,0);// принимаем данные клиента
send(AcceptSocket,data,512,0);// посылаем назад
closesocket(AcceptSocket); // закрываем соединение
}while(1);
}
}else
{ // клиент
connect(s, (SOCKADDR*) &service, sizeof(service));
// формируем данные
long Time=GetTickCount();// засекаем относительное время
send(s,data,512,0);
recv(s,data,512,0);
Time=GetTickCount()-Time;// посчитали время, успокоились
printf("\nTime is %li ms",Time);
}
closesocket(s); // закрываем соединение (прослушивание)
WSACleanup(); // отключаем библиотеку
2 ВАРИАНТ
//ПРОГРАММА СЕРВЕР
unit NetTestSrv;
interface
type
TForm1 = class(TForm)
Socket1: TServerSocket;
procedure Socket1Read(Sender: TObject; Socket: TCustomWinSocket);
private
{ Private declarations }
public
{ Public declarations }
end;
type
implementation
procedure TForm1._FORM_CREATE(Sender: TObject);
begin
Socket1.Port:=1203038;
Socket1.Active:=True;
end;
procedure TForm1.Socket1Read(Sender: TObject; Socket: TCustomWinSocket);
begin
Socket1.Socket.SendText(Socket.ReceiveText;);
end;
end.
//ПРОГРАММА КЛИЕНТ
unit NetTestClient;
interface
type
TForm1 = class(TForm)
Socket1: TClientSocket;
procedure Socket1Read(Sender: TObject; Socket: TCustomWinSocket);
end;
implementation
var i:integer;
procedure TForm1._FORM_CREATE(Sender: TObject);
begin
Socket1.Address:='127.0.0.0';
Socket1.Port:=530262;
Socket1.Active:=True;
i=GetTickCount();
Socket1.Socket.SendText('TEST TEXT');
end;
end;
procedure TForm1.Socket1Read(Sender: TObject; Socket: TCustomWinSocket);
begin
if Socket1.Socket.ReceiveText='TEST TEXT' then begin
ShowMessage('Время передачи данных - ' + IntToStr(GetTickCount()-i) + ' мс');
end;end;
Билет 18
Дата публикования: 2015-02-18; Прочитано: 331 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!