no ten kod jsem omylem smazal, ale nemel jsem tam memset, jak poznamenal zlz, dekuji za vasi pomoc, myslim, ze uz to pujde
Příspěvky odeslané z IP adresy 90.183.103.–
ve skutečnosti není problém to slovo vytáhnou, ale, vždy se mi za X znaků slova, které jsou ohraničení / a mezerou, přidá ještě 2 - 3 ascii znaky, a to neumím odstranit
Zdravim, potrebuji poradit, mam program, ktery posloucha portu, ktery mu zadam a kdyz se z prohlizece pripojim (localhost:port/soubor) tak mi program vypise co mi poslal prohlizec, to neni problem, ale jak z toho dostanu ven polozku 'soubor', vyzkousel jsem uz kde co, ale vetsinou jsem si to je zhorsil, chtel bych zadany soubor otevrit a poslat prohlizeci jeho obsah
zdroj:
#pragma comment(lib,"Ws2_32.lib")
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <winsock2.h>
#include <iostream>
using namespace std;
int main(int argv, char *argc[])
{
WORD wvr = MAKEWORD(1, 1);
WSADATA data;
sockaddr_in sName;
sockaddr_in cInfo;
SOCKET sock;
int addrlen;
int size;
int port;
char *dir;
char *soubor;
FILE *file;
char buffer[1000];
if(argv != 3)
{
cerr << "Chyba! Syntax programu: " << argc[0] << " port koren_webu" << endl;
}
port = atoi(argc[1]);
dir = argc[2];
if(WSAStartup(wvr, &data) != 0)
{
cerr << "Chyba: selhal WSAStarup" << endl;
return -1;
}
if((sock = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP)) == INVALID_SOCKET)
{
cerr << "Nepodarilo se vytvorit socket" << endl;
WSACleanup();
return -1;
}
sName.sin_family = AF_INET;
sName.sin_port = htons(port);
sName.sin_addr.s_addr = INADDR_ANY;
if(bind(sock, (sockaddr *)&sName, sizeof(sName)) == SOCKET_ERROR)
{
cerr << "Nepodarilo se pojmenovat socket" << endl;
WSACleanup();
return -1;
}
if(listen(sock, 10) == SOCKET_ERROR)
{
cerr << "Nepodarilo se poslouchat na zadanem socketu" << endl;
WSACleanup();
return -1;
}
while(true)
{
addrlen = sizeof(cInfo);
SOCKET client = accept(sock, (sockaddr *)&cInfo, &addrlen);
if(client == INVALID_SOCKET)
{
cerr << "Nepodarilo se prijmout spojeni" << endl;
WSACleanup();
return -1;
}
cout << "Pripojeni zaznamenano" << endl;
size = recv(client, buffer, 999, 0);
if(size < 0)
{
cerr << "Problem s prijetim dat" << endl;
WSACleanup();
return -1;
}
cout << "Prijato " << size << " bytu" << endl;
cout << buffer << endl;
size = send(client, buffer, strlen(buffer), 0);
if(size < 0)
{
cerr << "Problem pri odesilani dat" << endl;
WSACleanup();
return -1;
}
cout << "Odeslano " << size << " bytu" << endl;
closesocket(client);
}
closesocket(sock);
WSACleanup();
return 0;
}
v aktualnim souboru posilam prohlizeci zpatkz to co mi poslal, v dalsi verzi bych rad posilal obsah souboru
Diky za kazdou radu
hmm... tak nevím, když si to odkrokuju tak jsou hodnoty správné, musím se v tom pořádně prohrabat
Zdravím, narazil jsem na zvláštní problém, nic podobného se mi zatím nestalo:
mám následující strukturu
struct Souradnice
{
int x;
int y;
};
a provádím následující operaci:
nove.x = puvodni.x + 1;
kde puvodni obsahuje v x 4 a v y 1
problém je, že očekávám v nove.x hodnotu 5, ale uloží se do ní -858993460
nevím kde může být chyba v takto triviální operaci
Díky
Zdravím mám takový začátečnický problém, chci program (v C++) rozdělit do více souborů, udělal jsem si hlavičkový soubor, kam jsem si naházel proměnné a konstanty (globální) a prototypy funkcí, includoval jsem si to do obou souborů (main a funkce), ale kompiler mi vyhodí chybu: multiple definition of 'okno' v main a first defined here v funkce
nevím co dělám blbě, chvíli jsem googlil, ale návody co jsem našem mi nijak nepomohly nevíte o nějakém dobrém tutoriálu nebo by jste mi nemohl někdo napsat jak se to správně dělá
díky