Ver Mensaje Individual
  #2 (permalink)  
Antiguo 12/05/2005, 15:15
MaxExtreme
 
Fecha de Ingreso: abril-2005
Mensajes: 3.083
Antigüedad: 19 años, 1 mes
Puntos: 17
Enhorabuena por atreverte con los sockets de verdad y no con WinSock.

La respuesta es sencilla. En C se suele usar una cosa que se llaman "punteros". Se usan para almacenar direcciones de memoria.

Una función normal pide datos y devuelve otro u otros. En el caso de gethostname, pide dos datos y devuelve un estado.

Pero uno de los datos no es una variable String en sí misma, sino una _dirección_ para guardar el resultado allí.

La definición es:

http://msdn.microsoft.com/library/de...hostname_2.asp
Código:
int gethostname(
  char* name,
  int namelen
);
Parameters

name
[out] Pointer to a buffer that receives the local host name.
namelen
[in] Length of the buffer, in bytes.

Return Values
If no error occurs, gethostname returns zero. Otherwise, it returns SOCKET_ERROR and a specific error code can be retrieved by calling WSAGetLastError.


Atento a "Pointer to a buffer that receives the local host name." -> Puntero que recibirá el nombre de la máquina local.

En la API de Windows es común esto. En C y otros lenguajes es muy común, pero en VB no está "documentado". Para obtener la dirección de una variable, necesitas usar la función VarPtr. El resultado es el que debes pasar a la función de la API.