Consultor Eletrônico



Kbase P5664: Example of socket server in 4GL and Java.
Autor   Progress Software Corporation - Progress
Acesso   Público
Publicação   15/10/2008
Status: Verified

GOAL:

Example of socket server in 4GL and Java.

FIX:

###4GL:
On the server leave running following program:

DEFINE VARIABLE hServer AS HANDLE NO-UNDO.
DEFINE VARIABLE lRC AS LOGICAL NO-UNDO.
DEFINE VARIABLE mHeader AS MEMPTR NO-UNDO.
DEFINE VARIABLE mData AS MEMPTR NO-UNDO.
DEFINE VARIABLE greeting AS CHAR NO-UNDO.

CREATE SERVER-SOCKET hServer.
lRC = hServer:SET-CONNECT-PROCEDURE('ProcessClientConnect') NO-ERROR.
lRC = hServer:ENABLE-CONNECTIONS('-S 33740') NO-ERROR.
MESSAGE "Connections enabled".
SET-SIZE(mData) = 64.
SET-BYTE-ORDER(mData) = BIG-ENDIAN.
greeting = "hello there .. Bye Now".
PUT-STRING(mData,1) = greeting.

DO ON STOP UNDO, LEAVE:
WAIT-FOR CLOSE OF THIS-PROCEDURE.
END.

PROCEDURE ProcessClientConnect:
DEFINE INPUT PARAMETER hSocket AS HANDLE NO-UNDO.

hsocket:WRITE(mData,1, LENGTH(greeting)).
MESSAGE hsocket:BYTES-WRITTEN " bytes written" .
hSocket:DISCONNECT().
END.

From client you can run:
telnet <ip address of socket server> 33740

********************************************************************
###Same program in the server but with Java (It is necessary to compile it with java):

import java.io.*;
import java.net.*;

public class Sock1 {
public static void main(String[] args) {
try {
int port = Integer.parseInt(args[0]);
ServerSocket ss = new ServerSocket(port);
for(;;) {
Socket client = ss.accept();
ClientThread t = new ClientThread(client);
t.start();
}
}
catch (Exception e) {
System.err.println(e.getMessage());
System.err.println("Usage: java sock <port>");
}
}

static class ClientThread extends Thread {
Socket client;
ClientThread(Socket client) { this.client = client; }
public void run() {
try {
PrintWriter out = new PrintWriter( new OutputStreamWriter(client.getOutputStream()),true);
out.print(" Hello there ... Bye Now");
out.flush();
out.close();
client.close();
}
catch (IOException e) { }
}
}
}

*********************************