Progress Sockets and .Net Sockets

Posted by Admin on 29-Sep-2008 12:41

I am in the process of building a "Server" style ABL application that uses sockets for communication with 3rd part applications.

The Server seems to work ok (although I'm not 100% on that), and if I use a client written in ABL I can communicate with it, get a valid response and so forth.

However, when I use a client I've written in C# it will not even connect to the ABL server process.

Progress will talk to progress and .Net will talk to .Net but they won't talk to each other.

Is there something additional I need to do with the Progress Socket objects to get them talking to non-Progress clients?

Or is the problem likely my .Net?

Progress Version is 10.1B03 on Windows XP.

.Net version is 3.5 using Visual Studio 2008 to create.

Thanks.

All Replies

Posted by Tim Kuehn on 29-Sep-2008 13:59

If your socket manager isn't throwing a connection event (you have it written in an event-driven fashion, correct?) then the problem's with the .NET app, or something (like a firewall) in between the .NET and ABL apps.

Have you tried getting the .NET application to connect to any other sockets on the machine to verify that it can do so?

Posted by rstanciu on 30-Sep-2008 04:38

you are trying to re-invent the open-client.

In my opinion, to comunicate .Net-4GL you have 2 simples solutions:

1) Create a new appserver (stateless), put your 4GL procedure in PROPATH

of appServer, connect the appserver to you database. Compile the 4GL procedure

and use the ProxyGen to create 4 *.dll for .Net. In .Net you have to import the *.dll

generated by ProxyGen and call the Progress 4GL procedures.

2) Create a new appServer (state-free) , install Tomcat, and use the ProxyGen to create

a Web-Services project. You can expose your 4GL procedures as Web-Services in Progress.

Using a .Net application you can consume it.

Posted by Admin on 01-Oct-2008 08:13

I figured out my problem.

Thanks to both of you for your help, it got me thinking in the right direction to realize that everything was actually sort of working, and that I'd just typo'd on the port numbers between the Progress and .Net applications.

As to why I'm using the 4GL and not the Open-client, I need to provide a communication between an existing 3rd party app (which already uses sockets for communication) with an existing Progress application. The .Net tool I'm also working on is just to test, and manage the Progress "Server" process. I know I could write the server process in .Net and use the open-client to communicate with the Appserver, but I'm the only one in my organization who knows .Net and thus it would not be maintainable by others if I did.

Now on to making the Server process work properly and provide proper Asynchronous support.

Posted by rstanciu on 01-Oct-2008 08:21

This is a good example to create a ServerSocket / Client socket

in Progress. In my opinion by using the HTTP layer is simple and

the debugging/maintaining is simple too.

Start the Server and test it with a web-browser, if the

web-browser can connect, your .Net application should be able to connect too.

Message was edited by:

Rares Stanciulescu

This thread is closed