Форум программистов, компьютерный форум, киберфорум
Наши страницы
C для начинающих
Войти
Регистрация
Восстановить пароль
 
Aliaxandr
8 / 8 / 8
Регистрация: 03.07.2015
Сообщений: 219
1

Выслать число серверу

09.04.2017, 19:15. Просмотров 234. Ответов 0
Метки нет (Все метки)

Имеется следующий код сервера:
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
main()
{
   int sd,buff,clen;
   struct sockaddr_in sad,cad;
 
   signal(SIGHUP,SIG_IGN);
   sd=socket(AF_INET,SOCK_DGRAM,0);
   bzero((char *) &sad, sizeof(sad));
   sad.sin_family=AF_INET;
   sad.sin_addr.s_addr=htonl(INADDR_ANY);
   sad.sin_port=htons((ushort) 5000);
   bind(sd,(struct sockaddr *) &sad,sizeof(sad));
   clen=sizeof(cad);
   while (1)
      {
         recvfrom(sd,(char *) &buff,sizeof(int),0,(struct sockaddr *) &cad,&clen);
         buff=ntohl(buff);
 
         // тут код какой-то функции, которая что-то делает с 
         // целым числом, которое выслал клиент
 
         buff=htonl(buff);
         sendto(sd,(char *) &buff,sizeof(int),0,(struct sockaddr *) &cad,clen);
      }
}
Адрес сервера 153.19.1.202 и номер порта 5000.
Пишу программу с использованием User Datagram Protocol, хочу выслать серверу целое число. Мой код:
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
int main(){
int sock, length, n;
struct sockaddr_in server, from;
struct hostent *he,*hp;
struct in_addr ipv4addr;
 
sock=socket(AF_INET,SOCK_DGRAM,0);
server.sin_addr.s_addr=htonl(INADDR_ANY);
server.sin_family=AF_INET;
server.sin_port=htons((ushort)5000);
inet_pton(AF_INET, "153.19.1.202", &ipv4addr);
he = gethostbyaddr(&ipv4addr, sizeof ipv4addr, AF_INET);
printf("Host name: %s\n", he->h_name);//тут просто вывожу на экран название хоста, чтобы проверить все ли ок
if(he==0)printf("Unnown host\n");
 
bcopy((char *)he->h_addr,(char *)&server.sin_addr,he->h_length);
length=sizeof(struct sockaddr_in);
        int buff=5;
       buff=htonl(buff);
        if( sendto(sock,(char *)&buff,sizeof(int),0,(struct sockaddr *)&from,length)<0){
                printf("Send failed\n");
                return 1;
        }
return 0;
}
На университетском сервере сервер работает постоянно. Подскажите, что я делаю не так? Результат работы программы:
Send failed

Добавлено через 5 часов 0 минут
Cправился сам, выкидываю код, может кому-то пригодится
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
#include <stdio.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <string.h>
#include <arpa/inet.h>
 
int main(){
        int clientSocket, portNum, nBytes;
        //char buffer[1024];
        struct sockaddr_in serverAddr;
        socklen_t addr_size;
 
        /*Create UDP socket*/
        clientSocket = socket(AF_INET, SOCK_DGRAM, 0);
        /*Configure settings in address struct*/
        serverAddr.sin_family = AF_INET;
        serverAddr.sin_port = htons(5000);
        serverAddr.sin_addr.s_addr = inet_addr("153.19.1.202");
        memset(serverAddr.sin_zero, '\0', sizeof serverAddr.sin_zero);
 
        /*Initialize size variable to be used later on*/
        addr_size = sizeof serverAddr;
 
        int buffer;
        printf("Enter number\n");
        scanf("%d",&buffer);
        buffer=htonl(buffer);
        sendto(clientSocket,(char *)&buffer,sizeof(int),0,(struct sockaddr *)&serverAddr,addr_size);
 
        recvfrom(clientSocket,(char *)&buffer,sizeof(int),0,(struct sockaddr *)&serverAddr,NULL);
        buffer=ntohl(buffer);
        printf("Result %d\n",buffer);
        return 0;
}
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.04.2017, 19:15
Ответы с готовыми решениями:

Вирус просит выслать смс на номер 7781
Прошу помощи для удаления, лечения компа от вируса, который блокирует браузеры(поиск) и соц сети....

Прошу сделать 2 скрина выделенных файлов и выслать
Кто может у себя в матлабе 2017 открыть сделать 2 скрина выделенных файлов и выслать пожалуйста

Ограничить число запросов к серверу
Существует ли надежный способ как-то идентифицировать клиентскую машину, чтобы ограничить...

Нужно прошить EEPROM Holtek HT27C512-70, (64x8) и выслать почтой
Может это глупая просьба, но на данный момент обращаться мне больше не куда. Получится - хорошо,...

Нужно прошить EEPROM Holtek HT27C512-70, (64x8) и выслать почтой. Украина.
Может это глупая просьба, но на данный момент обращаться мне больше не куда. Получится - хорошо,...

0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
09.04.2017, 19:15

Не могу подключиться к серверу по FTP ошибка Превышено время ожидания соединения, Ошибка:Невозможно подключиться к серверу
Всем доброго настроения! ПЫтался подключиться через две программы с разных компов (точнее компа...

Дано целое число. Вывести его строку-описание вида «отрицательное чет-ное число», «нулевое число», «положительное нечетное число» и т. д.
Дано целое число. Вывести его строку-описание вида «отрицательное чет-ное число», «нулевое число»,...

Сколько существует программ, которые число a преобразуют в число b,а затем это число преобразуют в число c
Нужно написать общую программу,решающую задачу. У исполнителя две команды, которым присвоены...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru