Форум программистов, компьютерный форум CyberForum.ru

Сервкр и клиент, досылается много лишнего - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Бинарный перебор (не на кодах Грея) http://www.cyberforum.ru/cpp-beginners/thread1017164.html
Здравствуйте. Может кто-нибудь привести пример реализации бинарного перебора не на кодах Грея (например, задача про чемодан/размер монет и т.д.) и объяснить его в общих чертах? Заранее спасибо.
C++ Подсчитать количество символов в самой длинной группе В строке, состоящей из групп нулей и единиц, подсчитать количество символов в самой длинной группе. Помогите решить. Вот есть еще задачка:Написать программу подсчета числа слов в строке, содержащей пробелы. Вот её код #include <string.h> void main() { int n, i, nst, len; char st; puts(" Input string "); gets(st); if (st != ' ') n = 1; http://www.cyberforum.ru/cpp-beginners/thread1017153.html
C++ Вычислить количество элементов матрицы, не кратных числу К в столбце с номером М
помогите пожалуйста с лабой :0 Дан двумерный целочисленный массив.Память выделить динамически, заполнить случайными числами. Вывести массив в матричной форме. Вычислить количество элементов, не кратных числу К в стобце с номером М.
C++ Из двух массивов разной длины сформировать общий массив и вычислить сумму отрицательных элементов, индексы которых есть полные квадраты.
. Из двух массивов разной длины сформировать общий массив и вычислить сумму отрицательных элементов, индексы которых есть полные квадраты. помогите написать программу с помощи с++
C++ Определить сумму элементов в тех строках, которые содержат хотя бы один нулевой элемент. 2)Поменять местами четные строки... http://www.cyberforum.ru/cpp-beginners/thread1017128.html
Дана целочисленная квадратная матрица. 1) Определить сумму элементов в тех строках, которые содержат хотя бы один нулевой элемент. 2)Поменять местами четные строки и четные столбцы матрицы, например вторую строку со вторым столбцом, четвертую строку с четвертым столбцом.
C++ Табуляция Добрый день, почему при написании этого кода, 0 в последней строке не выравнивается? #include<iostream> #include<vector> #include<string> using namespace std; int main() { vector<string> team(6); team = "CSKA"; подробнее

Показать сообщение отдельно
sssemil
3 / 3 / 1
Регистрация: 29.01.2013
Сообщений: 91

Сервкр и клиент, досылается много лишнего - C++

24.11.2013, 13:56. Просмотров 157. Ответов 0
Метки (Все метки)

Я слепил(не мног от туда, не много отсюда) сервер и клиент на c++ под линксом. Когда посылаю на сервер соощение то оно доходит, а после него куча странных сообщений и если два слова то ток первое долетает..почему?) - https://app.box.com/s/tcynsl6egcba9329m4hc

Сервер :
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
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
#include <stdio.h>
#include <unistd.h>
#include <sys/socket.h>
#include <sys/types.h>
#include <netinet/in.h>
#include <stdlib.h>
#include <string.h>
#include <sys/select.h>
#include <sys/time.h>
#include <arpa/inet.h>
#include <iostream>
#include <set>
 
#define MAX_SIZE 50
 
using namespace std;
 
int main()
{
    int listen_desc, conn_desc; // main listening descriptor and connected descriptor
    int maxfd, maxi; // max value descriptor and index in client array
    int i,j,k;  // loop variables
    fd_set tempset, savedset;  // descriptor set to be monitored
    int client[FD_SETSIZE], numready; // array of client descriptors
    struct sockaddr_in serv_addr, client_addr;
    char buff[MAX_SIZE];
 
    listen_desc = socket(AF_INET, SOCK_STREAM, 0);
 
    if(listen_desc < 0)
        printf("Failed creating socket\n");
 
    bzero((char *)&serv_addr, sizeof(serv_addr));
 
    serv_addr.sin_family = AF_INET;
    serv_addr.sin_addr.s_addr = INADDR_ANY;
    serv_addr.sin_port = htons(3659);
 
    if (bind(listen_desc, (struct sockaddr *)&serv_addr, sizeof(serv_addr)) < 0){
        printf("Failed to bind\n");
        exit(0);}
 
    listen(listen_desc, 5);
 
    maxfd = listen_desc; // Initialize the max descriptor with the first valid one we have
    maxi = -1; // index in the client connected descriptor array
    for (i=0; i<FD_SETSIZE; i++)
        client[i] = -1;  // this indicates the entry is available. It will be filled with a valid descriptor
    FD_ZERO(&savedset); // initialize the descriptor set to be monitored to empty
    FD_SET(listen_desc, &savedset); // add the current listening descriptor to the monitored set
 
    struct sockaddr_in sa;
    char str[INET_ADDRSTRLEN];
 
    while(1) // main server loop
    {
        // assign all currently monitored descriptor set to a local variable. This is needed because select
        // will overwrite this set and we will lose track of what we originally wanted to monitor.
        tempset = savedset;
        numready = select(maxfd+1, &tempset, NULL, NULL, NULL); // pass max descriptor and wait indefinitely until data arrives
 
        //printf("Waiting\n");
 
        if(FD_ISSET(listen_desc, &tempset)) // new client connection
        {            
            inet_ntop(AF_INET, &(client_addr), str, INET_ADDRSTRLEN);
            cout<<"New client connected - "<<str<<"\n"; 
 
            socklen_t size = sizeof(client_addr);
            conn_desc = accept(listen_desc, (struct sockaddr *)&client_addr, &size);
            for (j=0; j<FD_SETSIZE; j++)
                if(client[j] < 0)
                {
                    client[j] = conn_desc; // save the descriptor
                    break;
                }
 
                FD_SET(conn_desc, &savedset); // add new descriptor to set of monitored ones
                if(conn_desc > maxfd)
                    maxfd = conn_desc; // max for select
                if(j > maxi)
                    maxi = j;   // max used index in client array
        }
 
        for(k=0; k<=maxi; k++) // check all clients if any received data
        {
            if(client[k] > 0)
            {
                if(FD_ISSET(client[k], &savedset))
                {
                    int num_bytes;
                    if( (num_bytes = read(client[k], buff, MAX_SIZE)) > 0)
                    {
                        buff[num_bytes] = '\0';
                        inet_ntop(AF_INET, &(client_addr), str, INET_ADDRSTRLEN);
                        cout<<str<<" : "<<buff<<endl;
                    }
 
                    if(num_bytes == 0)  // connection was closed by client
                    {
                        close(client[k]);
                        FD_CLR(client[k], &savedset);
                        client[k] = -1;
                    }
 
                    if(--numready <=0) // num of monitored descriptors returned by select call
                        break; 
                }
            }
        }
    } // End main listening loop
 
    close(listen_desc);
    return 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
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <iostream>
#include <string>
#include <string.h>
#include <unistd.h>
#include <fcntl.h>
#include <algorithm>
#include <set>
#include <cstdio>
#include <arpa/inet.h>
 
using namespace std;
 
int main(int argc, char* argv[])
{
    int sock;
    char addrC[15];
    char msg[256];
    int port;
    const char* caddr;
    cout<<"Address : ";
    cin.getline(addrC,1024);
    caddr=addrC;
    cout<<"Port : ";
    cin>>port;
    cout<<"Message : ";
    cin>>msg;
    struct sockaddr_in addr;
    sock = socket(AF_INET, SOCK_STREAM, 0);
    if(sock < 0)
    {
        perror("socket");
        exit(1);
    }
 
    addr.sin_family = AF_INET;
    addr.sin_port = htons(port);
    addr.sin_addr.s_addr = inet_addr(caddr);
    if(connect(sock, (struct sockaddr *)&addr, sizeof(addr)) < 0)
    {
        perror("connect");
        exit(2);
    }
             //strcat(argv[3], dv);
             //strcat(argv[3], argv[2]);
             send(sock, msg, 1024, 0);
    close(sock);
 
    return 0;
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru