Форум программистов
 
Расширенный поиск
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

Вернуться   Форум программистов > C++ > C/C++ Сетевое программирование
Регистрация

Восстановить пароль
Повторная активизация e-mail

Ответ
 
Опции темы
Старый 13.03.2017, 00:12   #1
KhNJu
 
Регистрация: 13.03.2017
Сообщений: 5
Репутация: 10
По умолчанию Помогите, пожалуйста, переписать код приложения по TCP клиент-сервер в UDP клиент - сервер...

Помогите, пожалуйста, переписать код приложения по TCP клиент-сервер в UDP клиент - сервер...

Клиент:
Код:

#include <iostream>
#include <stdio.h>
#include <cstdlib>
#include <unistd.h>
#include <stdarg.h>
#include <string.h>
#include <errno.h>
#include <netdb.h>
#include <sys/time.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <ctime>
#include <fstream>
#include <sys/syspage.h>
#include <sys/neutrino.h>


using namespace std;


void error( const char *msg, int err = EOK ) {
    perror( msg );
    if( err != EOK ) errno = err;
    exit( EXIT_FAILURE );
}
 double CyclesTomsec(uint64_t a)
{
	uint64_t b=SYSPAGE_ENTRY(qtime)->cycles_per_sec;
	return a*1.0e6/(double) b;
}

int main(int argc,char **argv)
{
    int i=0,mas[200], mas1[200];
    uint64_t t, t1=0;
    ifstream in("mas.txt");
    if(!in) cout<<"File not found\n", exit(EXIT_FAILURE);
    while(!in.eof()){
    	in>>mas[i]; i++;
    }
    in.close();

    mas[i]=0xffff;
    int n=i+1;
	in_port_t listen_port = 9000;
	struct sockaddr_in peer;
	int s, rc;
	srand(time(NULL));
 	char buf[20], echo[20];
 	for(i=0; i<n;i++){
      memset( &peer, 0, sizeof(peer));
      peer.sin_len = sizeof(peer);
      peer.sin_family = AF_INET;
      peer.sin_port = htons(listen_port);
      inet_aton( "localhost", &peer.sin_addr );

	s=socket(AF_INET,SOCK_STREAM,0);
  	if (s<0)
  		error ("create stream socket failed");
  	if  (connect(s,(struct sockaddr *) &peer,sizeof(peer)))
		  error("connect failed");
	sprintf(buf, "%d", mas[i]);
	 t = ClockCycles();	
	if( ( rc = write( s, buf, strlen(buf) + 1 )) <= 0 ) { perror( "write data failed" ); break; };
	rc = read( s, echo, 20 );
	t1+=ClockCycles()-t;
      if( rc < 0 ) { perror( "read data failed" ); break;};
      if( rc == 0 ) { std::cout << "server closed connection" << std::endl; break; };
      if( strcmp(buf, echo )== 0 ) { cout << "wrong data" << std::endl; break;};
      mas1[i]=atoi(echo);
	close( s );
   }
	
cout << "Common time of connection - " <<CyclesTomsec(t1/n)<< " mcs"<<std::endl;
	ofstream out("mas1.txt");
    if(!out) cout<<"File not found\n", exit(EXIT_FAILURE);
    for(i=0;i<n-1;i++)
    {
    	out<<mas1[i]<<"  ";
    }
    out.close();
  	exit(EXIT_SUCCESS);
 }

Сервер:
Код:

#include <iostream>
#include <stdio.h>
#include <cstdlib>
#include <unistd.h>
#include <stdarg.h>
#include <string.h>
#include <errno.h>
#include <netdb.h>
#include <sys/time.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>

using namespace std;

void error( const char *msg, int err = EOK ) {
     perror( msg );
     if( err != EOK ) errno = err;
     exit( EXIT_FAILURE );
} 

static int server(int s)
{
	int rc, k,k1;
   		char buf[20];
		rc = read( s, buf, 20 );
		k=atoi(buf);
		if( rc>0)
			if(k!=0xffff){
				k1=k^0xaa;
				sprintf(buf, "%d", k1);
				write( s, buf, strlen(buf) + 1 );
			}
		return k;	
}


 int main( int argc,  char **argv)
 {
   	in_port_t listen_port = 9000;
 	struct sockaddr_in peer;
 	socklen_t peerlen;
 	int s, s1, k;
 	const int on = 1;

  s = socket(AF_INET,SOCK_STREAM,0);
  if (s<0)
  		error ("create stream socket failed");
  if (setsockopt(s,SOL_SOCKET,SO_REUSEADDR,&on,sizeof(on)))
 	error("setsockopt failed");
 	memset( &peer, 0, sizeof(peer));
    peer.sin_len = sizeof(peer);
    peer.sin_family = AF_INET;
    peer.sin_port = htons(listen_port);
    peer.sin_addr.s_addr=htonl(INADDR_ANY);
  if (bind(s,(struct sockaddr * ) &peer,sizeof(peer)))
 	error("bind failed");
  if (listen(s, 25))
 	error("listen failed");
  do
  {
   	peerlen = sizeof (peer);
	s1= accept(s,(struct sockaddr *  )&peer, &peerlen); 	
        if  (s1<0)
 		error("accept failed");
 	k=server(s1);
 	close(s1);
} while  (k!=0xffff);
 exit(EXIT_SUCCESS);
 }

KhNJu вне форума   Ответить с цитированием
Старый 13.03.2017, 00:18   #2
Alex11223
Модератор
Заслуженный модератор
 
Регистрация: 12.01.2011
Сообщений: 14,823
Репутация: 2903

icq: 512-7шесть5
skype: alexp.frl
По умолчанию

Чем помочь-то? Или вы перепутали "помогите" и "сделайте за меня"?
Alex11223 вне форума   Ответить с цитированием
Старый 13.03.2017, 00:34   #3
KhNJu
 
Регистрация: 13.03.2017
Сообщений: 5
Репутация: 10
По умолчанию

весь код не нужно переделывать, нужно поправить его...
KhNJu вне форума   Ответить с цитированием
Старый 13.03.2017, 00:43   #4
Alex11223
Модератор
Заслуженный модератор
 
Регистрация: 12.01.2011
Сообщений: 14,823
Репутация: 2903

icq: 512-7шесть5
skype: alexp.frl
По умолчанию

Зачем кому-то делать это за вас?

Доделать за вас под ваше задание код, который вы где-то нашли, это не "помочь". Помощь это например когда вы сами что-то делаете и задаете конкретные вопросы (на которые не удалось найти ответ самостоятельно). Если вопросов нет, то значит вы и не пытались разобраться.
Alex11223 вне форума   Ответить с цитированием
Ответ



Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
курсовик, C++, TCP сервер-клиент borisetingof Фриланс 3 29.12.2015 23:47
TCP/IP клиент -сервер zhenya.ya C/C++ Сетевое программирование 10 05.03.2011 23:01
как создать TCP клиент, TCP сервер ? DreamMaster911 C/C++ Сетевое программирование 1 26.10.2010 15:05
UDP клиент-сервер. Пакет neon2k Общие вопросы .NET 1 27.06.2010 11:53
простой сервер(клиент) TCP nntpaha Общие вопросы C/C++ 4 25.12.2007 20:02




10:23.


Powered by vBulletin® Version 3.8.8 Beta 2
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.

купить трафик


как улучшить посещаемость, а также решения по монетизации сайтов, видео и приложений

RusProfile.ru


Справочник российских юридических лиц и организаций.
Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru