Potrzebuje bibliotek socket

0

Witam. Potrzebuje wyjasnienia, skad wziasc wszystkie biblioteki odnosnie socket, i w ogole lacznosci programu przez internet. Druga sprawa to, jak je zainstalowac, czy ja mam je po prostu wkleic do ?://Dev Cpp/includes/ ?

0

Jak masz gcc to wszystko co jest potrzebne do socketow juz masz, a poza tym na windowsie do projektu trzeba dodac ws32.lib, czy jakos tak ;p

0

Socket? Na pewno o nagłówek Ci chodzi? http://www.sockets.com/winsock.htm

0

To w takim razie dajcie mi jakis najkrotszy przyklad zastosowania tego "Winsock"

0
Badnick napisał(a)

To w takim razie dajcie mi jakis najkrotszy przyklad zastosowania tego "Winsock"

wyszukiwarka na forum nie dziala, czy google ?

0

Na MSDN-ie przy omówieniu winsock i konkretnych funkcji przykładowego kodu jest od metra i ciut ciut.

0

Znalazlem taki kod:

#include <string>
#include <winsock2.h>

WORD version = MAKEWORD(2,2);   // używamy wersji 2.2
WSADATA wsaData;       // nasze WSA
if(!WSAStartup(version, &wsaData)) // tworzymy WSA
{
  // mamy błąd, WSA nie chce sie zainicjować
  cout << "Błąd inicjalizacji WSA" << endl;
  WSACleanup(); // usuwamy WSA
  return 1;
}
if( LOBYTE(wsaData.wVersion) != 2 || 
    HIBYTE(wsaData.wVersion) != 2 )
{
  cout << "Nieprawidłowa wersja" << endl;
  WSACleanup(); // usuwamy WSA
  return 1;
}

Tylko nie chce mi dzialac, nie wiadomo czemu, znalazlem go w jakims tutorialu. Oto log kompilacji:

#include <string>
#include <winsock2.h>

WORD version = MAKEWORD(2,2);   // używamy wersji 2.2
WSADATA wsaData;       // nasze WSA
if(!WSAStartup(version, &wsaData)) // tworzymy WSA
{
  // mamy błąd, WSA nie chce sie zainicjować
  cout << "Błąd inicjalizacji WSA" << endl;
  WSACleanup(); // usuwamy WSA
  return 1;
}
if( LOBYTE(wsaData.wVersion) != 2 || 
    HIBYTE(wsaData.wVersion) != 2 )
{
  cout << "Nieprawidłowa wersja" << endl;
  WSACleanup(); // usuwamy WSA
  return 1;
}
0

SORKI POMYLKA: Log kompilacji :

Kompilator: Default compiler
Building Makefile: "C:\Documents and Settings\KUBA.RODZINA\Pulpit\cwiczenia\proba sock\Makefile.win"
Wykonywanie  make...
make.exe -f "C:\Documents and Settings\KUBA.RODZINA\Pulpit\cwiczenia\proba sock\Makefile.win" all
g++.exe -c main.cpp -o main.o -I"C:/Dev-Cpp/lib/gcc/mingw32/3.4.2/include"  -I"C:/Dev-Cpp/include/c++/3.4.2/backward"  -I"C:/Dev-Cpp/include/c++/3.4.2/mingw32"  -I"C:/Dev-Cpp/include/c++/3.4.2"  -I"C:/Dev-Cpp/include"   

main.cpp:7: error: expected unqualified-id before "if"
main.cpp:7: error: expected `,' or `;' before "if"
main.cpp:14: error: expected unqualified-id before "if"
main.cpp:14: error: expected `,' or `;' before "if"

make.exe: *** [main.o] Error 1

Wykonanie zakończone
0

Widziałeś kiedyś C++ na oczy? Zacznij od napisania hello-world, potem baw się gniazdkami.

0

No to napraw to jak taki madry jestes. Hello worldy mam juz dawno za soba

0
Badnick napisał(a)

Hello worldy mam juz dawno za soba

Tja, i w nich funkcji main nie używałeś?

0
Świętowit napisał(a)
Badnick napisał(a)

Hello worldy mam juz dawno za soba

Tja, i w nich funkcji main nie używałeś?

Yyy. ;p No moze uzywalem.

W takim razie zmienilem na cos takiego:

#include <iostream>
#include <string>
#include <winsock2.h>

using namespace std;

WORD version = MAKEWORD(2,2);   // używamy wersji 2.2
WSADATA wsaData;       // nasze WSA

SOCKET sListen, // nasze "ucho"
       sClient; // nasz klient

int main(int argc, char *argv[])
{

if(!WSAStartup(version, &wsaData)) // tworzymy WSA
{
  // mamy błąd, WSA nie chce sie zainicjować
  cout << "Błąd inicjalizacji WSA" << endl;
  WSACleanup(); // usuwamy WSA
  return 1;
}
if( LOBYTE(wsaData.wVersion) != 2 || 
    HIBYTE(wsaData.wVersion) != 2 )
{
  cout << "Nieprawidłowa wersja" << endl;
  WSACleanup(); // usuwamy WSA
  return 1;
}

sListen = socket( AF_INET, SOCK_STREAM, IPPROTO_IP);
if( sListen == SOCKET_ERROR ){
  cout << "Nie mozna stworzyc ucha" << endl;
  WSACleanup();
  return 1;
}else
cout << "Yyyy, nie wiem po co to" << endl;

system("PAUSE");
return 1;
}

Skompilowalo sie, ale po wlaczeniu, program sie wylacza Od razu. Czy to ma tak dzialac?

0
sListen = socket( AF_INET, SOCK_STREAM, IPPROTO_IP);
if( sListen == SOCKET_ERROR ){
  cout << "Nie mozna stworzyc ucha" << endl;
  WSACleanup();
  return 1;
}else
cout << "Yyyy, nie wiem po co to" << endl;

system("PAUSE");
return 1;

Przeczytaj jakis kurs, bo porazka bez kitu. Nie mozesz nasluchiwac dopoki gniazda nie zbindujesz, a jak zaczniesz juz nasluchiwac to lecisz z accept w petli na przyklad.

0

[wstyd] dobra ma sie wylaczac od razu, ja tam listen() widzialem a to zmienna jest

W tym kodzie tworzysz socketa i nic wiecej nie robisz ;)

0

Dobra, jakos sie udalo. Mam dzialajacego Klienta i Serwer. Tylko teraz mam nowy problem: Wysylanie wiadomosci do serwera:

string wiadomosc;
	char buffer[DEFAULT_BUFFER];
	recv(sClient, buffer, DEFAULT_BUFFER, 0);
	label1:
	cout << "Wiadomosc: ";
	cin >> wiadomosc;
	cout << "Odebrano: " << wiadomosc << endl;
	send(sClient, buffer, strlen(buffer)+1, 0);
	cout << "Wyslano: " << buffer << endl;
    goto label1;
	WSACleanup();

Kompletnie nie wiem jak zrobic, zeby wysylalo string "wiadomosc" na serwer. Probowalem zmieniac "buffer" na "wiadomosc", ale kompilator nie uznal tego za najlepszy pomysl.

0
BADNICK napisał(a)

Probowalem zmieniac "buffer" na "wiadomosc", ale kompilator nie uznal tego za najlepszy pomysl.

W dokumentacji wywołania systemowego send() masz odpowiedź dlaczego.

0

:) , Mozna dokladniej? Przygodę z WinSock zaczalem dzisiaj rano, wiec wiesz...

0

"Beej's guide by network programming" niech będzie Twoją drogą. Przyszły programista winien być z google za pan brat:
http://msdn.microsoft.com/en-us/library/ms740149(VS.85).aspx

0

Nie zwiazane z gniazdami pod Windows, ale sie podziele, moze komus sie przyda kodzik krotki pod Linuksa. Jednej rzeczy mu brakuje do minimalnej funkcjonalnosci, jaka zaplanowalem, ale mysle, ze nie problem printf uzyc ;p
http://pastebin.com/Nyuh5cuJ

0

"Beej's guide by network programming" niech będzie Twoją drogą

Właśnie ,leżą gdzieś te sockety na 4p , ale ta szukajka forumowa normalnie mnie rozwala , własny odłożony z 4p :
http://win32prog.republika.pl/ebook/prsoc.pdf

0

@t0m_k-tmp: Prowadzisz wg mnie najbardziej efektywny sposób krucjaty jaki do tej pory widziałem ;-P

0

@several: Tak wrzucilem, po co sie ma marnowac, ja tylko sobie dodam filtracje i ladne wyswietlanie zrobie, no moze jeszcze dodam jedna opcje, a ktos moze dopisze cos do tego, czy cos i skorzysta. Oczywiscie w celach edukacyjnych.

1 użytkowników online, w tym zalogowanych: 0, gości: 1