[c++] winsock

0

Hej ucze sie programowania sieciowego pod windows i juz napotkalem kilka nieporozumien :( ;(

  1. Mam pytanie dotyczace tego rowne -1 o co wtym chodzi?? dlaczego -1?? i co to jest ten perror? Czy on zwraca blad czy cos??
 if (listen(s,BACKLOG) == -1)
    perror("listen");
    exit(1);
  1. Tera dalczego w petli while jest 1?? i oco chodzi z tym sin_size??
while(1) {
   sin_size=sizeof(struct sockaddr_in);
 if (( new_polaczenie)=accept(s,(struct sockaddr *)&czyjs_ip, & sin_size)) == -1)
   {
       perror("accept");
       continue;
   }
....
0

Czy to -1 to jest blad??
i jeszcze pytanie o co chodzi w tych %d i % s?? bo w c++
tym sie nie spotkalem:/

while(true)
 {
  printf(">");
  gets(wsk->text);
  printf("%s",wsk->text);
  send(s,(char*)wsk ,sizeof(PAKIET),MSG_OOB);
  printf("\n>Poszło:  %d bajtów...\n", sizeof(PAKIET));
 }
0

NTF
RTFM

kalvin napisał(a)
  1. Mam pytanie dotyczace tego rowne -1 o co wtym chodzi?? dlaczego -1??

Tak się nie powinno sprawdzać błędu. Od tego jest zdefiniowana wartość SOCKET_ERROR.

kalvin napisał(a)

i co to jest ten perror? Czy on zwraca blad czy cos??

C standard:

7.19.10.4 The perror function
Synopsis
1 #include <stdio.h>
void perror(const char *s);
Description
2 The perror function maps the error number in the integer expression errno to an
error message. It writes a sequence of characters to the standard error stream thus: first
(if s is not a null pointer and the character pointed to by s is not the null character), the
string pointed to by s followed by a colon (:) and a space; then an appropriate error
message string followed by a new-line character. The contents of the error message
strings are the same as those returned by the strerror function with argument errno.
Returns
3 The perror function returns no value.
Forward references: the strerror function (7.21.6.2).

kalvin napisał(a)
  1. Tera dalczego w petli while jest 1??

Nieskończona pętla, to samo co: while(TRUE) {}

kalvin napisał(a)

i oco chodzi z tym sin_size??

addrlen
[out] An optional pointer to an integer which contains the length of the address addr.

0
kalvin napisał(a)

i jeszcze pytanie o co chodzi w tych %d i % s?? bo w c++
tym sie nie spotkalem:/

RTFM printf()

0

MarcinEc dzieki ale mam pytanie jak uzywac tej wartośći SOCKET_ERROR?? jakis maly przyklad jak mozna.

0
marcinEc napisał(a)
kalvin napisał(a)
  1. Mam pytanie dotyczace tego rowne -1 o co wtym chodzi?? dlaczego -1??

Tak się nie powinno sprawdzać błędu. Od tego jest zdefiniowana wartość SOCKET_ERROR.

bzdurzysz.

if (( new_polaczenie)=accept(s,(struct sockaddr *)&czyjs_ip, & sin_size)) ==  INVALID_SOCKET){
  switch (WSAGetLastError()){
    case WSANOTINITIALIZED:perror("WSANOTINITIALIZED");break;
    case WSAENETDOWN:perror("WSAENETDOWN");break;
    case WSAEADDRINUSE:perror("WSAEADRINUSE");break;
    case WSAEFAULT:perror("WSAEFAULT");break;
    case WSAEINPROGRESS:perror("WSAEINPROGRESS");break;
    case WSAEAFNOSUPPORT:perror("WSAEAFNOSUPPORT");break;
    case WSAEINVAL:perror("WSAEINVAL");break;
    case WSAENOBUFS:perror("WSAENOBUFS");break;
    case WSAENOTSOCK:perror("WSAENOSOCK");break
    case WSAEWOULDBLOCK:perror("WSAEWOULDBLOCK"); // to dla nie blokujących.
  }
  continue;
}

perror(error) - fpintf(stderr,"%s\n",error);

poza tym marcin ma racje zajrzyj do ksoążek.

0
flabra napisał(a)
marcinEc napisał(a)
kalvin napisał(a)
  1. Mam pytanie dotyczace tego rowne -1 o co wtym chodzi?? dlaczego -1??

Tak się nie powinno sprawdzać błędu. Od tego jest zdefiniowana wartość SOCKET_ERROR.

bzdurzysz.

Sam bzdurzysz... [diabel]

listen
(...)
Return Values

If no error occurs, listen returns zero. Otherwise, a value of SOCKET_ERROR is returned

accept
(...)
Return Values

If no error occurs, accept returns a value of type SOCKET which is a descriptor for the accepted socket. Otherwise, a value of INVALID_SOCKET is returned

0

Znacie moze jakies ksiazki w ktorych znajde cos o programowaniu sieciowym w windows?? ale chodzi mi tylko o ksiazki

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