
24.12.2009, 18:14
|
|
Познающий
Регистрация: 27.09.2008
Сообщений: 57
С нами:
9273960
Репутация:
23
|
|
В переменной int лежит адрес, как присвоить этот адрес указателю типа char* ? Кастить что-то не выходит(
int addr = 0x0012FE74;
char* ptr = ???
|
|
|

24.12.2009, 18:44
|
|
Участник форума
Регистрация: 06.02.2006
Сообщений: 177
С нами:
10661593
Репутация:
88
|
|
никак
нельзя задавать адреса
|
|
|

24.12.2009, 19:38
|
|
Постоянный
Регистрация: 16.08.2006
Сообщений: 640
С нами:
10386906
Репутация:
599
|
|
int addr = 0x0012FE74;
char* ptr = (char*)addr;
|
|
|

24.12.2009, 19:55
|
|
Новичок
Регистрация: 20.04.2008
Сообщений: 11
С нами:
9504115
Репутация:
0
|
|
не получаеться...
объясните что я не так сделал, изучаю сокеты, по книге "Эффективное программирование 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..
|
|
|

24.12.2009, 23:46
|
|
Познающий
Регистрация: 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;
}
|
|
|

24.12.2009, 20:05
|
|
Banned
Регистрация: 08.12.2009
Сообщений: 21
С нами:
8645068
Репутация:
-10
|
|
Кто может сорцы критора выложить любого , а то ни как понять не могу одну фишку
|
|
|

24.12.2009, 22:19
|
|
Постоянный
Регистрация: 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];
}
}
Вообще лучше делать данные поля закрытыми и обращатся к ним через геттеры/сеттеры.
|
|
|

24.12.2009, 22:28
|
|
Участник форума
Регистрация: 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 в другой. А мне как бы надо что бы была одна ссылка на область памяти(массив) и я ее мог изменять во всех классах и так же при изменение в одном классе изменения отражались во всех
|
|
|

25.12.2009, 14:24
|
|
Познавший АНТИЧАТ
Регистрация: 16.04.2006
Сообщений: 1,488
С нами:
10562786
Репутация:
537
|
|
скажите пожалуйста, как грамотно содержимое файла занести в массив строк типа string? размер файл заранее неизвестен.
на данный момент я могу прочитать все в одну строку.
как бы сделать универсальную функцию, которая возвращает массив со строками, чтобы этот массив можно было объявлять без указания размера?
типа
string []rows = loadFile("rows.txt");
|
|
|

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));
получаю вектор в котором файл разбит на элементы по ПРОБЕЛАМ
как сделать так, чтобы он разбивал по переводам строк?
|
|
|
|
 |
|
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|