Pues eso que el mismo programa en Windows XP me funciona correctamente y en VISTA me da este error, el 10093.
#include "Fivewin.ch"
#include "struct.ch"
#include "exstruc.ch"
#define AF_UNSPEC 0 && unspecified
#define AF_INET 2 && internetwork: UDP, TCP, etc.
#define MSG_DONTROUTE 4 && send without using routing tables
#define SOCK_DGRAM 2 && datagram socket
#define SOL_SOCKET 65535 && options for socket level
#define SO_REUSEADDR 4 && allow local address reuse
#define SO_BROADCAST 32 &&permit sending of broadcast msgs
#define INADDR_ANY 0
#define sockaddr_size 16
#define IPPROTO_IP 0 && dummy for IP
#define IP_MULTICAST_IF 2 && set/get IP multicast interface = interfaz del multicast del IP de set/get
#define IP_MULTICAST_TTL 3 && set/get IP multicast timetolive
#define IP_ADD_MEMBERSHIP 5 && add an IP group membership
#define IP_DROP_MEMBERSHIP 6 && drop an IP group membership
#define FD_READ 1
#define FD_WRITE 2
#define FD_CLOSE 32
#define WSADESCRIPTION_LEN 256+1
#define WSASYS_STATUS_LEN 128+1
function Main()
STRUCT sockaddr
MEMBER s_family AS WORD
MEMBER s_port AS WORD
MEMBER s_addr AS LONG
MEMBER s_zero AS STRING LEN 8
ENDSTRUCT
STRUCT WSAData
MEMBER wVersion AS WORD
MEMBER wHighVer AS WORD
MEMBER szDescrip AS STRING LEN WSADESCRIPTION_LEN
MEMBER szSystem AS STRING LEN WSASYS_STATUS_LEN
MEMBER iMaxSock AS WORD
MEMBER iMaxUdpDg AS WORD
MEMBER lpVendor AS LONG
ENDSTRUCT
STRUCT Startup
MEMBER wVersion AS WORD
MEMBER wHighVer AS WORD
MEMBER szDescrip AS STRING LEN WSADESCRIPTION_LEN
MEMBER szSystem AS STRING LEN WSASYS_STATUS_LEN
MEMBER iMaxSock AS WORD
MEMBER iMaxUdpDg AS WORD
MEMBER lpVendor AS LONG
ENDSTRUCT
STRUCT stMreq
MEMBER i_multia AS LONG
MEMBER iWORDerf AS LONG
ENDSTRUCT
STRUCT ip_mreq // Para MemberShip
MEMBER i_multia AS LONG
MEMBER i_interf AS LONG
ENDSTRUCT
public rc:=0,cTemp:="",nSocket:=-1
WSAData:wVersion :=0
WSAData:wHighVer :=0
WSAData:szDescrip:=space(WSADESCRIPTION_LEN)
WSAData:szSystem :=space(WSASYS_STATUS_LEN)
WSAData:iMaxSock :=0
WSAData:iMaxUdpDg:=0
WSAData:lpVendor :=0
*---
cTemp:=WSAData:cBuffer
rc:=WSAStartup(0x0101,@cTemp) // rc:=WSAStartup(bin2i(chr(2)+chr(0)),@cTemp)
WSAData:cBuffer:=cTemp
if rc<>0
MsgAlert("Error en WSASTARTUP"+chr(13)+;
"NO SE PUEDE CONTINUAR"+chr(13)+;
"Error numero "+alltrim(str(rc))+chr(13)+;
"No hay comunicaciones ("+alltrim(str(WSAGetLastError()))+")","¡ AVISO !")
return nil
else
nSocket:=-1
nSocket:=socket(AF_INET,SOCK_DGRAM,IPPROTO_IP) // ¡¡¡ AQUI DA EL ERROR !!!
if nSocket<0
MsgAlert("Error en SOCKET ("+alltrim(str(WSAGetLastError()))+")","¡ AVISO !")
nSocket:=-1
return nil
else
MsgInfo(nSocket,"Socket")
endif
CloseSocket(nSocket)
return nil
DLL32 FUNCTION WSAStartup(n AS LONG, pStruct AS LPSTR) AS LONG PASCAL FROM "WSAStartup" LIB "wsock32.dll"
DLL32 FUNCTION WSACleanup() AS LONG PASCAL FROM "WSACleanup" LIB "wsock32.dll"
DLL32 FUNCTION closesocket(af AS LONG) AS WORD PASCAL FROM "closesocket" LIB "wsock32.dll"
DLL32 FUNCTION MemCopy(dest AS LPSTR, src AS LPSTR, cb AS LONG ) AS VOID PASCAL FROM "RtlMoveMemory" LIB "Kernel32.dll"
DLL32 FUNCTION socket(af AS LONG, s_type AS LONG, protocol AS LONG ) AS LONG PASCAL FROM "socket" LIB "wsock32.dll"
DLL32 FUNCTION setsockopt(s AS LONG,level AS LONG,optname AS LONG,optval AS LPSTR,optlen AS LONG) AS LONG PASCAL FROM "setsockopt" LIB "wsock32.dll"
DLL32 FUNCTION getsockopt(s AS LONG,level AS LONG,optname AS LONG,optval AS LPSTR,optlen AS LONG) AS LONG PASCAL FROM "getsockopt" LIB "wsock32.dll"
DLL32 FUNCTION htonl(hostlong AS LONG) AS LONG PASCAL FROM "htonl" LIB "wsock32.dll"
DLL32 FUNCTION htons(hostshort AS LONG) AS WORD PASCAL FROM "htons" LIB "wsock32.dll"
DLL32 FUNCTION bind(s AS LONG, pStruct AS LPSTR,namelen AS LONG) AS LONG PASCAL FROM "bind" LIB "wsock32.dll"
DLL32 FUNCTION inet_addr(cp AS STRING) AS LONG PASCAL FROM "inet_addr" LIB "wsock32.dll"
DLL32 FUNCTION inet_ntoa(nip AS LONG) AS STRING PASCAL FROM "inet_ntoa" LIB "wsock32.dll"
DLL32 FUNCTION WSAAsyncSelect(s AS LONG, hWnd AS LONG, wMsg AS LONG, lEvent AS LONG) AS LONG PASCAL FROM "WSAAsyncSelect" LIB "wsock32.dll"
DLL32 FUNCTION recv(s AS LONG, Buf AS LPSTR, buflen AS LONG, flags AS LONG) AS LONG PASCAL FROM "recv" LIB "wsock32.dll"
DLL32 FUNCTION recvfrom(s AS LONG, Buf AS LPSTR, buflen AS LONG, flags AS LONG, pStruct AS LPSTR, namelen AS LONG) AS LONG PASCAL FROM "recvfrom" LIB "wsock32.dll"
DLL32 FUNCTION send(s AS LONG, Buf AS LPSTR, buflen AS LONG, flags AS LONG) AS LONG PASCAL FROM "send" LIB "wsock32.dll"
DLL32 FUNCTION sendto(s AS LONG, Buf AS LPSTR, buflen AS LONG, flags AS LONG, addr AS LPSTR, i AS LONG) AS LONG PASCAL FROM "sendto" LIB "wsock32.dll"
DLL32 FUNCTION WSAGetLastError() AS LONG PASCAL FROM "WSAGetLastError" LIB "wsock32.dll"Mi abuelo decía: Los aviones vuelan porque Dios quiere, y los helicópteros ni Dios sabe porque vuelan.
FWH 16.02, xHarbour 1.2.3, Harbour 3.2.0, WorkShop 4.5, AJ Make 0.30, Borlan BCC 7.00, VisualStudio 2013
FWH 16.02, xHarbour 1.2.3, Harbour 3.2.0, WorkShop 4.5, AJ Make 0.30, Borlan BCC 7.00, VisualStudio 2013