Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

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

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

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 12.03.2017, 23:12   #1
KhNJu
 
Регистрация: 12.03.2017
Сообщений: 5
По умолчанию Помогите, пожалуйста, переписать код приложения по 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 вне форума Ответить с цитированием
Старый 12.03.2017, 23:18   #2
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Чем помочь-то? Или вы перепутали "помогите" и "сделайте за меня"?
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 12.03.2017, 23:34   #3
KhNJu
 
Регистрация: 12.03.2017
Сообщений: 5
По умолчанию

весь код не нужно переделывать, нужно поправить его...
KhNJu вне форума Ответить с цитированием
Старый 12.03.2017, 23:43   #4
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

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

Доделать за вас под ваше задание код, который вы где-то нашли, это не "помочь". Помощь это например когда вы сами что-то делаете и задаете конкретные вопросы (на которые не удалось найти ответ самостоятельно). Если вопросов нет, то значит вы и не пытались разобраться.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
курсовик, C++, TCP сервер-клиент borisetingof Фриланс 3 29.12.2015 22:47
TCP/IP клиент -сервер zhenya.ya C/C++ Сетевое программирование 10 05.03.2011 22: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 19:02