|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
04.03.2014, 00:57 | #1 |
Регистрация: 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, помогите пожалуйста, уже сколько сижу, не могу ничего сделать... |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
клиент и сервер на основе протокола 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 |