HOME FORUMS MEMBERS RECENT POSTS LOG IN  
× Авторизация
Имя пользователя:
Пароль:
Нет аккаунта? Регистрация
Баннер 1   Баннер 2
НОВЫЕ ТОРГОВАЯ НОВОСТИ ЧАТ
loading...
Скрыть
Вернуться   ANTICHAT > ПРОГРАММИРОВАНИЕ > С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

  #1  
Старый 24.12.2009, 18:14
Lee_fx
Познающий
Регистрация: 27.09.2008
Сообщений: 57
С нами: 9273960

Репутация: 23
По умолчанию

В переменной int лежит адрес, как присвоить этот адрес указателю типа char* ? Кастить что-то не выходит(

int addr = 0x0012FE74;
char* ptr = ???
 
Ответить с цитированием

  #2  
Старый 24.12.2009, 18:44
Irdis
Участник форума
Регистрация: 06.02.2006
Сообщений: 177
С нами: 10661593

Репутация: 88
По умолчанию

никак
нельзя задавать адреса
 
Ответить с цитированием

  #3  
Старый 24.12.2009, 19:38
Ra$cal
Постоянный
Регистрация: 16.08.2006
Сообщений: 640
С нами: 10386906

Репутация: 599


По умолчанию

int addr = 0x0012FE74;
char* ptr = (char*)addr;
 
Ответить с цитированием

не получаеться...
  #4  
Старый 24.12.2009, 19:55
Admin Derek
Новичок
Регистрация: 20.04.2008
Сообщений: 11
С нами: 9504115

Репутация: 0
Question не получаеться...

объясните что я не так сделал, изучаю сокеты, по книге "Эффективное программирование TCP/IP", но не как не пойму в чём ошибка. процесс останавливаеться на error socket..

код:

Код:
#include <winsock2.h>
#include <iostream>
using namespace std;

int main(void)
{
    struct sockaddr_in local;
    int s;
    int s1;
    int rc;
    char buf[1];
    
    local.sin_family = AF_INET;
    local.sin_port = htons(666);
    local.sin_addr.s_addr = INADDR_ANY;
    
    if((s = socket(AF_INET, SOCK_STREAM, 0)) == INVALID_SOCKET)
    {
         cout << "error socket\n";
         return 1;
    }    
    
    if((rc = bind(s, (sockaddr*)&local, sizeof(local))) == SOCKET_ERROR)
    {
          cout << "error bind\n" << errno;
          return 1;      
    }
    if((rc = listen(s, 5)))
    {
          cout << "error listen\n";
          return 1;
    }
    
    if((s1 = accept(s, NULL, NULL)) < 0)
    {
          cout << "error accept\n";
          return 1;
    }
    
    if((rc = recv(s1, buf, 1, 0)) <= 0)
    {
             cout << "error \n";
             return 1;
    }
    cout << "end: " << buf[0];
    return 0;
    
}

Последний раз редактировалось Admin Derek; 24.12.2009 в 20:01..
 
Ответить с цитированием

  #5  
Старый 24.12.2009, 23:46
Aag
Познающий
Регистрация: 26.07.2005
Сообщений: 54
С нами: 10942709

Репутация: 46
По умолчанию

Цитата:
Сообщение от Admin Derek  
объясните что я не так сделал, изучаю сокеты, по книге "Эффективное программирование TCP/IP", но не как не пойму в чём ошибка. процесс останавливаеться на error socket..
WSAStartup, WSACleanup

Сравни свой код с одним из примеров из msdn
Код:
#include <winsock2.h>
#include <stdio.h>
#include <windows.h>
#pragma comment(lib, "wininet.lib")

int main(void) {

  //----------------------
  // Initialize Winsock.
  WSADATA wsaData;
  int iResult = WSAStartup(MAKEWORD(2,2), &wsaData);
  if (iResult != NO_ERROR) {
    printf("Error at WSAStartup()\n");
    return 1;
  }

  //----------------------
  // Create a SOCKET for listening for
  // incoming connection requests.
  SOCKET ListenSocket;
  ListenSocket = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
  if (ListenSocket == INVALID_SOCKET) {
    printf("Error at socket(): %ld\n", WSAGetLastError());
    WSACleanup();
    return 1;
  }

  //----------------------
  // The sockaddr_in structure specifies the address family,
  // IP address, and port for the socket that is being bound.
  sockaddr_in service;
  service.sin_family = AF_INET;
  service.sin_addr.s_addr = inet_addr("127.0.0.1");
  service.sin_port = htons(27015);

  if (bind( ListenSocket, 
    (SOCKADDR*) &service, 
    sizeof(service)) == SOCKET_ERROR) {
    printf("bind() failed.\n");
    closesocket(ListenSocket);
    WSACleanup();
    return 1;
  }

  //----------------------
  // Listen for incoming connection requests.
  // on the created socket
  if (listen( ListenSocket, 1 ) == SOCKET_ERROR) {
    printf("Error listening on socket.\n");
    closesocket(ListenSocket);
    WSACleanup();
    return 1;
  }

  //----------------------
  // Create a SOCKET for accepting incoming requests.
  SOCKET AcceptSocket;
  printf("Waiting for client to connect...\n");

  //----------------------
  // Accept the connection.
  AcceptSocket = accept( ListenSocket, NULL, NULL );
  if (AcceptSocket == INVALID_SOCKET) {
    printf("accept failed: %d\n", WSAGetLastError());
    closesocket(ListenSocket);
    WSACleanup();
    return 1;
  } else 
    printf("Client connected.\n");
  
  // No longer need server socket
  closesocket(ListenSocket);

  WSACleanup();
  return 0;
}
 
Ответить с цитированием

  #6  
Старый 24.12.2009, 20:05
Finger2010
Banned
Регистрация: 08.12.2009
Сообщений: 21
С нами: 8645068

Репутация: -10
По умолчанию

Кто может сорцы критора выложить любого , а то ни как понять не могу одну фишку
 
Ответить с цитированием

  #7  
Старый 24.12.2009, 22:19
razb
Постоянный
Регистрация: 24.03.2009
Сообщений: 670
С нами: 9017461

Репутация: 414


По умолчанию

Цитата:
sc->mas = xoii->mas;
/home/kubik/XO/xo_test/XO/widget.cpp:11: error: invalid array assignment
ты хоть читаешь что компилятор пишет?
Код:
for(int i = 0; i < 3; i++)
{
    for(int j = 0; j < 3; j++)
    {
       sc->mas[i][j] = xoii->mas[i][j];
    }
}
Вообще лучше делать данные поля закрытыми и обращатся к ним через геттеры/сеттеры.
 
Ответить с цитированием

  #8  
Старый 24.12.2009, 22:28
St0nX
Участник форума
Регистрация: 19.05.2007
Сообщений: 281
С нами: 9989619

Репутация: 106
По умолчанию

Цитата:
Сообщение от razb  
ты хоть читаешь что компилятор пишет?
Код:
for(int i = 0; i < 3; i++)
{
    for(int j = 0; j < 3; j++)
    {
       sc->mas[i][j] = xoii->mas[i][j];
    }
}
Вообще лучше делать данные поля закрытыми и обращатся к ним через геттеры/сеттеры.
При использовния данной конструкции я тупо копирую массив 1 в другой. А мне как бы надо что бы была одна ссылка на область памяти(массив) и я ее мог изменять во всех классах и так же при изменение в одном классе изменения отражались во всех
 
Ответить с цитированием

  #9  
Старый 25.12.2009, 14:24
Дикс
Познавший АНТИЧАТ
Регистрация: 16.04.2006
Сообщений: 1,488
С нами: 10562786

Репутация: 537


По умолчанию

скажите пожалуйста, как грамотно содержимое файла занести в массив строк типа string? размер файл заранее неизвестен.

на данный момент я могу прочитать все в одну строку.
как бы сделать универсальную функцию, которая возвращает массив со строками, чтобы этот массив можно было объявлять без указания размера?

типа

string []rows = loadFile("rows.txt");
 
Ответить с цитированием

  #10  
Старый 26.12.2009, 15:14
Дикс
Познавший АНТИЧАТ
Регистрация: 16.04.2006
Сообщений: 1,488
С нами: 10562786

Репутация: 537


По умолчанию

открываю файл

ifstream fin("file.txt");

копирую его в вектор, типа string

copy(istream_iterator<string>(fin), istream_iterator<string>(), back_inserter(vect));

получаю вектор в котором файл разбит на элементы по ПРОБЕЛАМ

как сделать так, чтобы он разбивал по переводам строк?
 
Ответить с цитированием
Ответ



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Часто задаваемые вопросы по MySQL Серый PHP 5 28.12.2006 18:26
Интернетчики задали российскому президенту очень странные вопросы podkashey Мировые новости. Обсуждения. 4 07.07.2006 16:53
Вопросы по Ipb 2.0 Voodoo_People Уязвимости CMS / форумов 26 15.02.2005 22:57



Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT ™ © 2001- Antichat Kft.