No compañero, vas a 20 manzanas del desfile.
Si estas usando (x)Harbour, puedes utilizar la libreria Tip.lib, que contiene todas las funciones necesarias para trabajar con IPs.
En general la cosa va asi:
Tienes un cliente del socket, y tienes que desarrollar un servidor de socket, a menos que te vyas a conectar a un servicio que ya esté establecido, si esto es el caso, no reinventes el hilo negro, utiliza la tip.lib, ya que tiene clientes de los servicios mas populares: web, ftp, pop y smtp.
si por el contrairo estas creando tu propio servidor, con tu propio protocolo, lo primero que debes hacer es construir el socket y ponerlo a "escuchar":
FUNCTION ActivateServer()
oServer := TSOCKET():New(18500)
oServer:bAccept := {|oSockServer| oSocketCliente := TSOCKET():Accept(oSockServer:nSocket),;
oSocketCliente:bRead := {|oSocket| LeeServidor(oSocket)},;
oSocketCliente:bClose := {|oSocket| oSocket:End()},;
oSocketCliente}
oServer:Listen()
RETURN (.T.)
Esta funcion crea un socket de escucha en el servidor, el cual se activa automaticamente al momento de llamar al metodo ::Listen(), al crear el socket tienes que definir un socket temporal, y definir los bloques de codigo que van a ejecutar la fucnioens cuando leas el socket (bRead).
Vamos ahora del lado del cliente, el cliente es mas simple porque solo tienes que conectarlo al socket servidor, esta funcion realiza la magia:
FUNCTION ActivarConexion()
oSocket := TSOCKET():New(NPUERTO)
oSocket:bRead := {|oSock| AnalizaRespuesta(oSock)}
oSocket:bConnect := {|oSock,nError| cIp := GETHOSTBYNAME(CSERVER)
oSocket:Connect(cIp,NPUERTO)
RETURN (.T.)
Y listo, ahora si quieres enviar mensajes al servidor, tienes que hacerlo asi:
oSocket:SendData("getfil d:\website\htdocs\petzold.zip")
Cuanto la cadena de caracteres llegue al servidor, se dispara de manera automatica la funcion LeeServidor(), que esta en programa servidor y que puede ser algo como esto:
FUNCTION LeeServidor(oCliente)
STATIC cFileName := ""
LOCAL cLetra, aDirecto := {}, cBuffer, cNserie
cLetra := oCliente:GetData()
RETURN cLetra
En este punto lees donde lees la informacion recibida del cliente.
Para enviar informacion de vuelta al cliente, haz creado un socket temporal en el server, y ahora envias de vuelta informacion:
oCliente:SendData("ONLINE"+CRLF)
TODAS las cadenas que envies, deben llevar un CR+LF que indica fin de linea y tambien fin de mensaje IP.
Para que todos los mensajes entre los sockets funcionen, tiene que haber por lo menos una Window FORZOSAMENTE , ya que es el bucle de mensajes de la ventana el que procesa los eventos de los sockets.