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) { }
}
}
}
*********************************