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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 29.11.2010, 07:08   #1
Phaeleh
 
Регистрация: 29.11.2010
Сообщений: 3
По умолчанию Передать двумерный массив через сокет (Debian)

Подскажите, пожалуйста. Не хватает знаний самому разобраться.

Клиент:

Код:
#include <sys/types.h>
#include <sys/socket.h>
#include "netinet/in.h"
#include <stdio.h>
#include <string.h>
#include <errno.h>


#define PORT 9877
#define BUF_SIZE 256
char message[50] = "";
char buf[1024];
char mass[25][25];
int main()
{
    char s;
    int sock, i;
    struct sockaddr_in addr;

    sock = socket(AF_INET, SOCK_STREAM, 0); //Следующие 20 строчек мона не читать
    if(sock < 0)
    {
        perror("Socket");
        return 0;
    }
	else printf("Socket created\n");
	fflush(stdout);

    addr.sin_family = AF_INET;
    addr.sin_port = htons(3425); 
    addr.sin_addr.s_addr = htonl(INADDR_LOOPBACK);
    if(connect(sock, (struct sockaddr *)&addr, sizeof(addr)) < 0)
    {
        perror("Connect");
        return 0;
    }
	else printf("Connection complete\n");
	fflush(stdout);

    printf("Введите команду:\n"); 
    scanf("%c:%c",&s,&message); 	//Ввели количество строчек (лежит в месседж)

    send(sock, message, strlen(message), 0); 	//Отправили на сервер
    recv(sock, mass, strlen(mass[i]), 0); // Как бы принимаем
    
    printf("%s", mass[i]);
    close(sock);

    return 0;
}
Phaeleh вне форума Ответить с цитированием
Старый 29.11.2010, 07:08   #2
Phaeleh
 
Регистрация: 29.11.2010
Сообщений: 3
По умолчанию

Сервер:

Код:
#include <sys/types.h>
#include <sys/socket.h>
#include "netinet/in.h"
#include <stdio.h>
#include <string.h>

#define PORT 9877


int main()
{
    int sock, listener, n, i;
    struct sockaddr_in addr;
    char buf[1024];
    char mass[25][25];
    int bytes_read;

    listener = socket(AF_INET, SOCK_STREAM, 0); //Следующие 30 строчек мона не смотреть
    if(listener < 0)
    {
        perror("socket");
        return 0;
    }
else 

	printf("Socket created\n");
	fflush(stdout);

    
    addr.sin_family = AF_INET;
    addr.sin_port = htons(3425);
    addr.sin_addr.s_addr = htonl(INADDR_ANY);
    if(bind(listener, (struct sockaddr *)&addr, sizeof(addr)) < 0)
    {
        perror("bind");
        return 0;
    }
	else printf("Bind complete\n");
	fflush(stdout);
    
	listen(listener, 1);
    
    while(1)
    {
        sock = accept(listener, NULL, NULL);
        if(sock < 0)
        {
            perror("accept");
            return 0;
        }

        while(1)
        {
            bytes_read = recv(sock, buf, 1024, 0); // Сервер принял наше сообщение
  
	FILE *f = NULL;
	n=atoi(buf);
	//printf("%d", n);
	if ((f = fopen("File", "r")) != NULL)
  		{	
    		for (i = 0; i < n; i++) 
		{

          fgets(mass[i], 50, f); // Cчитал нужное кол-во строчек, теперь они у нас тут в mass лежат
	  //printf("%s",mass[i]);
	  
	    
	}
    fclose(f);
  }          


	    if(bytes_read <= 0) break;
            send(sock, mass[i], strlen[mass], 0); //Какбы оправляем, но на клиент ничего не приходит, а пишется "Ошибка сегментирования"
        }
    
        close(sock);
    }
    
    return 0;
}
В конечном итоге, на клиент должны приходить наши считанные строчки из файла
Phaeleh вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как правильно передать через ссылку двумерный динамический массив? amerhant Общие вопросы C/C++ 2 21.04.2010 23:50
Передача переменной через сокет Yura_S Общие вопросы Delphi 3 25.03.2010 09:53
Передавать файл через сокет частями NieL Работа с сетью в Delphi 0 08.12.2009 16:42
Данные через сокет по tcp/ip протоколу a.haener JavaScript, Ajax 1 04.07.2009 08:14
Не работает отправка файла через сокет SARGE Работа с сетью в Delphi 0 29.01.2009 13:29