Hi Matthew, It looks like you've found a way.
If you really want to go this path, I would suggest looking for middleware products that would handle communications for you. There are two products which I have tried and I would suggest to you to look at. 1. ICE <http://www.zeroc.com> - a network middleware which supports .NET languages (particulary C#). One of the things that I did with this is to build a J multi-session server. To put it simply, since J is single threaded, I made a Windows Service which would make a new instance of J.EXE everytime a client connection is made. Each client gets their own session!!! 2. OpenTNL <http://opentnl.sourceforge.net/doxydocs> - I did not use this directly but it was buit-in with the Torque Game Engine ... Network middlewares or libraries handles the nitty-gritty of network protocols/programming and you just need to concentrate on the client and server business logics. r/Alex -----Original Message----- From: [email protected] [mailto:[email protected]] On Behalf Of Matthew Brand Sent: Sunday, January 03, 2010 9:50 PM To: Programming forum Subject: Re: [Jprogramming] C# .NET COM JDLLServer I would never claim to know what I am doing wrt to sockets (I barely understand them) but I got the c# loop from: http://msdn.microsoft.com/en-us/library/system.net.sockets.socket.aspx Where they write: ... // Send request to the server. s.Send(bytesSent, bytesSent.Length, 0); // Receive the server home page content. int bytes = 0; string page = "Default HTML page on " + server + ":\r\n"; // The following will block until te page is transmitted. do { bytes = s.Receive(bytesReceived, bytesReceived.Length, 0); page = page + Encoding.ASCII.GetString(bytesReceived, 0, bytes); } while (bytes > 0); return page; ... But it only works for me with the loop commented out. It works okay actually, but I will follow Bill's advice and use the ~system/examples/socket which looks slightly ( :-) ) better than mine. 2010/1/3 Raul Miller <[email protected]>: > On Sat, Jan 2, 2010 at 9:31 AM, Matthew Brand <[email protected]> > wrote: >> int bytes = 0; >> // do { >> try { >> bytes = JSocket.Receive(buffer, >> buffer.Length, 0); >> reply = reply + >> System.Text.Encoding.ASCII.GetString(buffer, 0, bytes); >> // Print("reply was:" + reply); >> } >> catch (System.Net.Sockets.SocketException ex) >> { >> Print("Socket exception on read:" + >> ex.SocketErrorCode); >> } >> >> // } while (bytes > 0); Loop causes a hang. Do not know why! > > I did not look to see if you had this socket configured for blocking > or non-blocking reads, but either way this loop should never > exit. Here's a quote from the relevant documentation: > > If no data is available for reading, the Receive method will block until > data is available, unless a time-out value was set by using > Socket.ReceiveTimeout. If the time-out value was exceeded, the > Receive call throws a SocketException. If you are in non-blocking > mode, and there is no data available in the in the protocol stack > buffer, the Receive method will complete immediately and throw a > SocketException. You can use the Available property to determine if > data is available for reading. When Available is non-zero, retry the > receive operation. > > Normally, the .Receive() method would never exit. But if you are > non-blocking, your "bytes" variable will not be updated. > > -- > Raul > ---------------------------------------------------------------------- > For information about J forums see http://www.jsoftware.com/forums.htm > -- "There is a 75 per cent chance that Al Gore, during the summer months, could be completely fact-free within five to seven years.” http://www.youtube.com/watch?v=X-5XwlcBqF0&feature=player_embedded http://www.youtube.com/watch?v=t8O-E_GN0Kg&feature=player_embedded Climate Scientists predicted UK snowfall thing of the past 10 years ago: http://www.independent.co.uk/environment/snowfalls-are-now-just-a-thing-of-the-past-724017.html Yet here we are, covered in snow! Say no to fascism! Say no to the Carbon tax! ---------------------------------------------------------------------- For information about J forums see http://www.jsoftware.com/forums.htm ---------------------------------------------------------------------- For information about J forums see http://www.jsoftware.com/forums.htm
