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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 04.03.2014, 00:57   #1
Ladis
 
Регистрация: 13.09.2013
Сообщений: 6
По умолчанию Осуществить взаимодействие клиента и сервера на основе протокола UDP

6. Осуществить взаимодействие клиента и сервера на основе протокола UDP. Функционирование клиента и сервера реализовать следующим образом: клиент посылает серверу число, сервер определяет является ли это число простым и возвращает "истина", если это так, в противном случае - "ложь" (простым является число, которое делится только само на себя).

сервер

#pragma comment (lib, "wsock32.lib")
#include <winsock2.h>
#include <iostream>
#include <stdio.h>
#include <string.h>
#include <windows.h>
#include <conio.h>
#include <stdlib.h>
using namespace std;

void main()
{
WORD wVersionRequested;
WSADATA wsaData;
int err;
wVersionRequested = MAKEWORD(2,2);
err = WSAStartup(wVersionRequested, &wsaData);
SOCKET s;
s = socket(AF_INET, SOCK_DGRAM, 0);
struct sockaddr_in ad;
ad.sin_port = htons(1024);
ad.sin_family = AF_INET;
ad.sin_addr.s_addr = 0;
bind(s,(struct sockaddr*)&ad, sizeof(ad));
char b[200], tmp = '\0';
int l;
int x=atoi(b);
l = sizeof(ad);
int rv = recvfrom(s, b, sizeof(b), 0, (struct sockaddr*)&ad, &l);
//b[rv]='\0';
//cout<<b<<endl;
int i=0;
char str[10];
int k=2, q=0;
for (k=2;k<x;k++)
{
if(x%k == 0)
{
q++;
}
}
if (q==0)
{
strcpy(str, "true");
}
else
{
strcpy(str, "false");
}
char res[100],*Res;
//_itoa(i, res, 10);
//if( d>a/2 )
Res=new char[strlen(str)+1];
strcpy(Res,str);
Res[strlen(str)]='\0';
sendto(s, str, strlen(str), 0, (struct sockaddr*)&ad, l);
closesocket(s);
WSACleanup();
}


клиент

#pragma comment (lib, "wsock32.lib")
#include <winsock2.h>
#include <stdio.h>
#include <string.h>
#include <WinSock2.h>
#include <windows.h>
#include <conio.h>
#include <iostream>
using namespace std;

int main(void)
{
char buf[100], b[100];
WORD wVersionRequested;
WSADATA wsaData;
int err;
wVersionRequested = MAKEWORD(2,2);
err= WSAStartup(wVersionRequested, &wsaData);
if(err != 0){return 0;}
SOCKET s;
s = socket(AF_INET,SOCK_DGRAM,0);
sockaddr_in add;
add.sin_family = AF_INET;
add.sin_port = htons(1024);
add.sin_addr.s_addr = inet_addr("127.0.0.1");
int t;
t = sizeof(add);
cout<<"Enter the string, please"<<endl;
cin.getline(buf,100,'\n');
sendto(s, buf, sizeof(buf), 0, (struct sockaddr*) &add, t);
int rv = recvfrom(s, b, sizeof(b), 0, (struct sockaddr*) &add, &t);
b[rv] = '\0';
cout<<b;
closesocket(s);
WSACleanup();
getch();
}

Проблема: Постоянно выдаёт тру, то есть я проверил значение x (пробовал его отсылать через atoi), и почему то он всегда равен 0, помогите пожалуйста, уже сколько сижу, не могу ничего сделать...
Ladis вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
клиент и сервер на основе протокола UDP Шиншилка Помощь студентам 0 27.12.2012 13:47
id клиента у Сервера by_Trojan Работа с сетью в Delphi 2 27.03.2012 20:43
Распараллелить выполнение задачи и осуществить синхронизация подзадач по сети. UDP. [C++ Builder] Radisson Фриланс 1 12.01.2012 04:51
Простая почтовая программа на основе протокола SMTP Rostislav1 Помощь студентам 0 25.05.2011 02:40
Как осуществить передачу и прием пакета c клиента на сервер? IIpopoK Работа с сетью в Delphi 6 07.12.2008 14:10