Модераторы: bsa
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Сервер - Клиент, Проблема с обменом данных TCP/IP 
V
    Опции темы
script4u
Дата 27.2.2009, 20:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 10
Регистрация: 27.2.2009

Репутация: нет
Всего: нет



Вообщем есть клиент:
Код

#include <stdio.h>
#include <winsock2.h>
#include <windows.h>
#include <iostream>
using namespace std;

int main()
{
    char buff[1024];
    char a[6] = "hello";
    WSAStartup(0x202, (WSADATA *)&buff[0]);
    SOCKET my_sock;
    my_sock = socket(AF_INET, SOCK_STREAM, 0);
    sockaddr_in dest_addr;
    dest_addr.sin_family = AF_INET;
    dest_addr.sin_port =htons(666);
    HOSTENT *hst;
    dest_addr.sin_addr.s_addr = inet_addr("127.0.0.1");
    connect(my_sock, (sockaddr *)&dest_addr, sizeof(dest_addr));
    int t = send(my_sock, (char*)&a, (int)sizeof(a), 0);
    cout << "\n" << t;
    Sleep(10000);
    closesocket(my_sock);
    return 0;
}

И сервер:
Код

#include <stdio.h>
#include <winsock2.h>
#include <windows.h>
#include <iostream>
using namespace std;

int main()
{
    char buff[1024];
    char k[6];
    WSAStartup(0x0202, (WSADATA *)&buff[0]);
    SOCKET mysocket;
    mysocket = socket(AF_INET, SOCK_STREAM, 0);
    sockaddr_in local_addr;
    local_addr.sin_family = AF_INET;
    local_addr.sin_port = htons(666);
    local_addr.sin_addr.s_addr = 0; 
    bind(mysocket, (sockaddr *)&local_addr, sizeof(local_addr));
    listen(mysocket, 5);
    accept(mysocket, NULL, NULL);
    recv(mysocket, (char*) &k, 6, 0);
    cout << k;
    Sleep (10000);
    return 0;
}


Клиент отправляет данные и сервер их получает, но не выводит их, в чем может проблема?

Еще есть вопрос: объявленные мной переменные (или массивы)  - не пустые, в них лежат левые данные. Так и должно быть? Это связанно как-то с очисткой памяти? 
PS знаю код кривой, но я новичок smile 
PM MAIL   Вверх
ex386
Дата 27.2.2009, 20:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 24
Регистрация: 27.2.2009

Репутация: нет
Всего: нет



в функции recv вы принимаете данные на слушающий сокет mysocket.
необходимо написать следующее:
Код

SOCKET client = accept(mysocket, NULL, NULL);
recv(client, (char*) &k, 6, 0);


так возможно заработает  smile 
PM MAIL   Вверх
script4u
Дата 27.2.2009, 20:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 10
Регистрация: 27.2.2009

Репутация: нет
Всего: нет



Точно! Спасибо, работает.

А как насчет вопроса про память?
PM MAIL   Вверх
zim22
Дата 27.2.2009, 20:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


depict1
****


Профиль
Группа: Завсегдатай
Сообщений: 2682
Регистрация: 15.1.2009
Где: Украина

Репутация: 29
Всего: 69



если хочешь, чтобы "правые" данные лежали в массивах, то инициализируй их при определении:
Код

char buff[1024] = {0};
char k[6] = {0};

плюс в клиенте зачем тебе эта строчка? smile ведь ты к ней не обращаешься ни разу.
Код

HOSTENT *hst;



--------------------
PM MAIL   Вверх
script4u
Дата 27.2.2009, 20:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 10
Регистрация: 27.2.2009

Репутация: нет
Всего: нет



Цитата(zim22 @ 27.2.2009,  20:29)
плюс в клиенте зачем тебе эта строчка? smile ведь ты к ней не обращаешься ни разу.
Код

HOSTENT *hst;


Пережиток прошлого =)
PM MAIL   Вверх
ex386
Дата 27.2.2009, 20:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 24
Регистрация: 27.2.2009

Репутация: нет
Всего: нет



Вместо buff[1024] лучшеб объявить структуру WSADATA чтоб все было по правилам  smile.
А насчет остальных структур, там все нормально  smile 
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.1396 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.