Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

Составьте программу для определения скорости передачи информации по сети одной ЭВМ к другой



#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; Прочитано: 329 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2024 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.006 с)...