abonnement Unibet Coolblue Bitvavo
pi_86638577
quote:
Op maandag 20 september 2010 15:32 schreef thabit het volgende:
C++ is dan ook meer een verzameling hacks bij elkaar dan een echte programmeertaal. :P
Troll :D
  maandag 20 september 2010 @ 22:21:05 #277
189216 netolk
maar dan andersom
pi_86656356
quote:
Op maandag 20 september 2010 15:32 schreef thabit het volgende:
C++ is dan ook meer een verzameling hacks bij elkaar dan een echte programmeertaal. :P
_O- _O-

quote:
Op maandag 20 september 2010 15:38 schreef Cruise.Elroy het volgende:
Troll :D
Beware of the Raping Zebra's
pi_86658475
Face it, mensen: het is niet goed porteerbaar, het heeft geen geheugenmanagement met garbage collector, het heeft geen goede ondersteuning voor parallelisatie (nee, pthread telt niet). 't Is eigenlijk gewoon een verkapte assembly en alleen handig voor kleine libraryfuncties die tot op de bit geoptimaliseerd moeten zijn.
pi_86658936
:')
"Wie niet gelooft in wonderen, is geen realist."
  dinsdag 21 september 2010 @ 08:10:52 #280
254493 Trollface.
gr rob fruithof, groningencity
pi_86663744
Ga eens ergens anders trollen. :')
★5731U★ Death from above '79★You're a woman, i'm a machinielsie ★ ✠ ★ Telkens weer een beetje sterven★ I was born in a winterstorm, i live there still★
pi_86672023
quote:
Op maandag 20 september 2010 23:04 schreef thabit het volgende:
Face it, mensen: het is niet goed porteerbaar, het heeft geen geheugenmanagement met garbage collector, het heeft geen goede ingebouwde ondersteuning voor parallelisatie. t Is eigenlijk gewoon een verkapte assembly en alleen handig voor kleine libraryfuncties die tot op de bit geoptimaliseerd moeten zijn en real-time applicaties en games waar elke ms telt en geheugen vaak de halve GB net haalt.
Dit klopt allemaal, maar dat komt gewoon omdat de taal op een bepaald abstractieniveau zit. Maakt de taal niet slecht, gewoon krachtiger maar minder geschikt voor RAD.
  dinsdag 21 september 2010 @ 17:01:18 #282
189216 netolk
maar dan andersom
pi_86679606
quote:
Op dinsdag 21 september 2010 13:29 schreef Cruise.Elroy het volgende:

[..]

Dit klopt allemaal, maar dat komt gewoon omdat de taal op een bepaald abstractieniveau zit. Maakt de taal niet slecht, gewoon krachtiger maar minder geschikt voor RAD.
_O-
Beware of the Raping Zebra's
pi_86680690
Natuurlijk speel ik advocaat van de duivel hier, maar af en toe heb ik het idee dat de keuze van sommige mensen voor C++ als programmeertaal sterke analogieën met godsdienstwaanzin vertoont.
pi_86715081
Met zo'n advocaat moet de duivel maar hopen dat ie niet wordt aangeklaagd.
  woensdag 22 september 2010 @ 21:38:05 #285
189216 netolk
maar dan andersom
pi_86728737
Goede avond, ik kwam code tegen voor een "chat" programma'tje alleen is dit dus voor linux geschreven en mis ik de volgende headers:
1
2
3
arpa/inet.h
netdb.h
netinet/in.h
SPOILER
Om spoilers te kunnen lezen moet je zijn ingelogd. Je moet je daarvoor eerst gratis Registreren. Ook kun je spoilers niet lezen als je een ban hebt.
Weet iemand hoe ik deze code onder Windows kan laten werken?

PS. Ik gebruik de mingw compiler...
Beware of the Raping Zebra's
pi_86729151
:o
pi_86729248
Onder Windows kan je winsock.h gebruiken, werkt nagenoeg hetzelfde, maar je zal hier en daar wat calls moeten versleutelen.
  woensdag 22 september 2010 @ 21:48:38 #288
189216 netolk
maar dan andersom
pi_86729286
quote:
Op woensdag 22 september 2010 21:47 schreef Cruise.Elroy het volgende:
Onder Windows kan je winsock.h gebruiken, werkt nagenoeg hetzelfde, maar je zal hier en daar wat calls moeten versleutelen.
Oke bedankt ik zal eens even een beetje gaan kloten met die winsock header en kijken of ik er wat uit kan krijgen...
Beware of the Raping Zebra's
pi_86740639
Nog gelukt? Want winsock zou redelijk gelijk moeten zijn aan de standaard berkley sockets interface, zeker voor simpele apps. :)

http://en.wikipedia.org/wiki/Berkeley_sockets
  donderdag 23 september 2010 @ 20:29:21 #290
189216 netolk
maar dan andersom
pi_86763691
quote:
Op donderdag 23 september 2010 10:08 schreef Cruise.Elroy het volgende:
Nog gelukt? Want winsock zou redelijk gelijk moeten zijn aan de standaard berkley sockets interface, zeker voor simpele apps. :)

http://en.wikipedia.org/wiki/Berkeley_sockets
Nou ik ben eerst maar begonnen met het volgen van een tut ipv dat example te draaien
Beware of the Raping Zebra's
pi_86781998
Net even een snelle echo gedraaid met hulp van een snelle opfris door MSDN. :P
Dit programma echo'ed alles terug totdat hij een zending binnenkrijgt dat begint met 'x'.

Enige libfile die je nodig hebt is Ws2_32.lib (in Visual Studio)

Sockets zijn echt heel simpel, maar je moet het model even doorhebben van sockets en adressen:
Elke verbinding naar de buitenwereld is een socket (maken met socket())

Als je een verbinding wilt ontvangen moet je dus een aanspreekpunt hebben. Eerst koppel je een socket aan een adres. (adres = ip + port) met bind() daarna zet je hem op luisterstand met listen()
Als je zelf verbinding wilt maken gebruik je simpelweg connect()

Als een verbinding binnenkomt op je luisterende socket, kan deze verbinding worden gebruikt om een nieuwe socket te maken waar je vervolgens mee kan praten met send()/recv(). Dit doe je met accept().
accept() blijft blocken totdat er een verbinding beschikbaar is. (kan je ook anders instellen overigens)
Je luister socket blijft overigens ook gewoon doordraaien dus je kan daar steeds accept() op blijven aanroepen om nieuwe inkomende verbindingen op te vangen.

Hou ook in de gaten dat elke TCP verbinding uniek moet zijn in zijn begin- en eind-adres. dat betekent dat je dus maar 1 connectie kan hebben van een specifiek adres naar een listen socket (die een vast adres heeft). Als je een uitgaande socket aanmaakt met connect() zal het adres van dit socket ook een willekeurige port meekrijgen tenzij je daarvoor expliciet een bind hebt gedaan, zodat je meerdere verbinden kan maken naar een server vanaf 1 IP. :) Als je je netwerkverkeer zit te bekijken wat binnenkomt zal je zien dat de inkomende adressen dus allemaal rare poorten hebben. :P dat is dus by design.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
#include "stdafx.h"
#include "windows.h"
#include "iostream"
#include "stdlib.h"
#include "winsock.h"
#include "assert.h"
int _tmain(int argc, _TCHAR* argv[])
{
  WSADATA wsadata;
  int result = WSAStartup(MAKEWORD(2,2), &wsadata); //using winsock version 2.2
  assert(result == 0);

  SOCKET listener;
  listener = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);

  sockaddr_in localip;
  localip.sin_family = AF_INET;
  localip.sin_addr.s_addr = inet_addr("127.0.0.1");
  localip.sin_port = htons(12345);
  
  result = (bind(listener, (SOCKADDR*) &localip, sizeof(localip)));
  assert(result == 0);

  listen(listener, SOMAXCONN);

  SOCKET incoming;
  incoming = accept(listener, NULL, NULL );
  int error = WSAGetLastError();
  assert(incoming != INVALID_SOCKET);
  closesocket(listener); // close listener, no longer needed, otherwise could be used again


  char buffer[100];
  while (1)
  {
    int bytesreceived = recv(incoming, buffer, sizeof(buffer), 0);
    if (buffer[0] == 'x') break;
    send(incoming, buffer, bytesreceived, 0);
  }
  WSACleanup();
  return 0;
}
Enige tricky gedeelte van de code is evt het casten tussen SOCKADDR en sockaddr_in structs. Moet je verder niet te veel op letten, je kan in de headers gaan kijken hoe dat precies zit.

Oh en htons() en co. zijn functies om endian om te draaien etc. Er zijn ook functies om hostnamen op te zoeken (getaddrinfo()) en nog een hele reeks andere handige functies.

Let op dat windows naast de standaard socket systemen ook nog allemaal andere toevoegingen heeft gemaakt, die zijn handig maar je kan daarna dus niet makkelijk meer poorten als je die eenmaal gaat gebruiken (beginnen vaak met WSA.....)

[ Bericht 16% gewijzigd door Cruise.Elroy op 24-09-2010 12:47:18 ]
  vrijdag 24 september 2010 @ 15:24:18 #292
189216 netolk
maar dan andersom
pi_86791568
Ik heb op deze site ook een paar examples gevonden

maar die van jou is ook wel handig :P

bedankt
Beware of the Raping Zebra's
pi_86794759
Leuke site, behandeld ook Overlapped I/O op een goede manier, dat zie je idd niet vaak :Y
  vrijdag 24 september 2010 @ 18:36:48 #294
189216 netolk
maar dan andersom
pi_86799146
ik heb nu alleen het probleem... Dat example van die site dus (die rot13server) probeer ik te draaien dat werkt gewoon alleen nu heb ik een client gemaakt die daar mee kan "praten". de connect werkt gewoon client kan data verzenden maar de server kan het niet ontvangen... Weet iemand waar het aan kan liggen??

PS. als ik source code moet posten hoor ik het wel
Beware of the Raping Zebra's
pi_86816496
Is de verbinding in stand gebracht? wat zijn je error-codes voor recv()? gebruik WSAGetLastError om evt extra info te krijgen. :)
  zaterdag 25 september 2010 @ 16:35:41 #296
189216 netolk
maar dan andersom
pi_86831751
de error die WSAGetLastError geeft is 10054...
De verbinding is gemaakt ect. en de recv van de server creëert dus die error (10054)

Op internet staat dat dit de error code is dat de client de connectie verbreekt... Alleen is dit (volgens mij) niet zo

[ Bericht 31% gewijzigd door netolk op 25-09-2010 17:02:55 ]
Beware of the Raping Zebra's
pi_86838570
Ja dat zal je toch echt even zelf moeten debuggen, ik denk dat de client gewoon de verbinding verbreekt zodra hij verbinding heeft gemaakt. Iig een program-flow fout van jouw kant waarschijnlijk. :)
  zaterdag 25 september 2010 @ 22:46:42 #298
189216 netolk
maar dan andersom
pi_86844565
quote:
Op zaterdag 25 september 2010 19:53 schreef Cruise.Elroy het volgende:
Ja dat zal je toch echt even zelf moeten debuggen, ik denk dat de client gewoon de verbinding verbreekt zodra hij verbinding heeft gemaakt. Iig een program-flow fout van jouw kant waarschijnlijk. :)
Ja dat klopt idd het is nu opgelost maar ik kan nergens een duidelijk lijstje vinden van de fout codes van WSAGetLastError()...
Beware of the Raping Zebra's
  zondag 26 september 2010 @ 00:11:04 #300
189216 netolk
maar dan andersom
pi_86847606
dankje :P
Beware of the Raping Zebra's
abonnement Unibet Coolblue Bitvavo
Forum Opties
Forumhop:
Hop naar:
(afkorting, bv 'KLB')