Forum: Winsock Problem

Forum huvudsida -> Programmering -> Winsock Problem

Sidor: 1

Till botten

magnetisk 16:40 - 30:e Maj 2010 | Post #1
Medlem
Inlägg: 6


Skicka PM
Tjena !

Jag har precis börjat med socket programmering i c++

Min kod ser ut som följer :



  1. [/SOURCE]#include <iostream>
  2. #include <winsock2.h>
  3. #include <windows.h>
  4.  
  5.  
  6. using namespace std;
  7.  
  8. lyssna();
  9. skickafil();
  10.  
  11. char fil[50];
  12.  
  13.  
  14. SOCKET Socket;
  15.  
  16. int main()
  17. {
  18.  
  19.  
  20. lyssna();
  21.  
  22. return 0;
  23. }
  24.  
  25. int lyssna()
  26. {
  27. WSADATA WsaDat;
  28.  
  29. if (WSAStartup(MAKEWORD(2, 0), &WsaDat) != 0)
  30. {
  31. cout << "Kunde inte starta Winsock !" << endl;
  32. }
  33.  
  34.  
  35. Socket = socket(AF_INET, SOCK_STREAM, 0);
  36. if (Socket == INVALID_SOCKET)
  37. {
  38. cout << "Kunde inte skapa socket !" << endl;
  39. }
  40.  
  41. SOCKADDR_IN SockAddr;
  42.  
  43. SockAddr.sin_port = 50;
  44.  
  45.  
  46. SockAddr.sin_family = AF_INET;
  47.  
  48. SockAddr.sin_addr.s_addr = inet_addr ("127.0.0.1");
  49.  
  50.  
  51. if (bind(Socket, (SOCKADDR *)(&SockAddr), sizeof(SockAddr)) == SOCKET_ERROR)
  52. {
  53. cout << "Det gick inte att binda socket !" << endl;
  54. }
  55.  
  56.  
  57. listen(Socket, 1);
  58.  
  59.  
  60. SOCKET TempSock = SOCKET_ERROR;
  61.  
  62. while (TempSock == SOCKET_ERROR)
  63. {
  64. TempSock = accept(Socket, NULL, NULL);
  65. }
  66.  
  67. Socket = TempSock;
  68.  
  69.  
  70. while(1)
  71. {
  72.  
  73. recv(Socket, fil, 50, NULL);
  74.  
  75.  
  76.  
  77.  
  78. Sleep(2000);
  79.  
  80. }
  81.  
  82.  
  83.  
  84.  
  85.  
  86. return 0;
  87.  
  88. }
  89.  
  90. [SOURCE=cpp]


Detta program kompilerar bra men när jag kör klienten så kan jag inte ansluta till servern med min lokala Ip adress

Jag har även testat med min externa IP men ingen skillnad

Jag har öppnat port 50 på routern men det funkar ändå inte.

Vad beror detta på ?

Tacksam för svar

Mvh Magnus





martin310 18:18 - 30:e Maj 2010 | Post #2
Medlem
Inlägg: 132


Skicka PM
Vilken IP menar du med lokala?
127.. eller 192..

-------------------------

Hjälp jorden med Granola, det är gratis och funkar på både Windows och Linux, och försämrar inte datorns prestandad!





Kerp 18:36 - 30:e Maj 2010 | Post #3
Medlem
Inlägg: 2


Skicka PM
Jag har för mig att du måste göra såhär när du sätter porten till sockaddr.

  1. SockAddr.sin_port = htons(50);





magnetisk 21:35 - 30:e Maj 2010 | Post #4
Medlem
Inlägg: 6


Skicka PM
Tack för svaret Kerp !

Men dessvärre så gjorde de ingen skillnad ..




magnetisk 07:00 - 31:a Maj 2010 | Post #5
Medlem
Inlägg: 6


Skicka PM
Ingen som kan hjälpa ?




Vitdom 09:03 - 3:e Augusti 2010 | Post #6
Medlem
Inlägg: 71


Skicka PM
Är du säker på att din lokala dators IP-adress är "127.0.0.1"?

gör htons(50); som Kerp sade.

Socket = socket(AF_INET, SOCK_STREAM, 0); specificerar inget protokoll, testa
Socket = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
för TCP-protokollet.

-------------------------





Sidor: 1

Forum huvudsida -> Programmering -> Winsock Problem
Atom feed

Du får inte posta i den här tråden | Till toppen