Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • World
  • Users
  • Groups
Skins
  • Light
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Default (No Skin)
  • No Skin
Collapse
Code Project
  1. Home
  2. General Programming
  3. C#
  4. A CRY FOR HELP - Threading , Sockets, Asynchronous headaches

A CRY FOR HELP - Threading , Sockets, Asynchronous headaches

Scheduled Pinned Locked Moved C#
helpsysadmindebuggingquestionlounge
8 Posts 3 Posters 0 Views 1 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • D Offline
    D Offline
    Danny Rodriguez
    wrote on last edited by
    #1

    Greetings CP! Well - it appears I've been presented with a roadblock and cant seem to find the problem. Heres the situatio. Ive created an app that has to scann 16000+ servers - for now - all that has to be done is connect and send and receive once asynchronously. I am able to get the entire process down - the problem that occurs is that at random times the app just halts. It just stops connecting to the servers - no exceptions thrown - no nada. Its not a threading problem - unless its a bug in the threadpooling for asychronous socket communications. To draw out some broad strokes about the current scenario Classes MainForm applications main form ConnectionState stores connection information - buffer - socket - server hostname - start time / end time / elapsed time ConnectionManager this object is used in the main form (connection state is not accessed directly) - i start the process with a method called CheckServers() which is passed to a ThreadStart object in the main form for a Thread object named worker - the worker thread is started and is set to a background thread from the main form MessageEventHandler a delegate used to pass the messages from the buffer to controls on the main form I know this is a somewhat complicated issue to deal with over these forums.. but - i have traced every aspect of my code - 2-3 days spent in the debugger watching everything and still no luck. Any suggestions? Danny!

    B L 2 Replies Last reply
    0
    • D Danny Rodriguez

      Greetings CP! Well - it appears I've been presented with a roadblock and cant seem to find the problem. Heres the situatio. Ive created an app that has to scann 16000+ servers - for now - all that has to be done is connect and send and receive once asynchronously. I am able to get the entire process down - the problem that occurs is that at random times the app just halts. It just stops connecting to the servers - no exceptions thrown - no nada. Its not a threading problem - unless its a bug in the threadpooling for asychronous socket communications. To draw out some broad strokes about the current scenario Classes MainForm applications main form ConnectionState stores connection information - buffer - socket - server hostname - start time / end time / elapsed time ConnectionManager this object is used in the main form (connection state is not accessed directly) - i start the process with a method called CheckServers() which is passed to a ThreadStart object in the main form for a Thread object named worker - the worker thread is started and is set to a background thread from the main form MessageEventHandler a delegate used to pass the messages from the buffer to controls on the main form I know this is a somewhat complicated issue to deal with over these forums.. but - i have traced every aspect of my code - 2-3 days spent in the debugger watching everything and still no luck. Any suggestions? Danny!

      B Offline
      B Offline
      Brad Bruce
      wrote on last edited by
      #2

      Are you setting off alarms at your ISP? They may not like you accessing so many machines. It could be taken as a worm or a vulnerability test in preparation for a new virus etc.

      D 1 Reply Last reply
      0
      • B Brad Bruce

        Are you setting off alarms at your ISP? They may not like you accessing so many machines. It could be taken as a worm or a vulnerability test in preparation for a new virus etc.

        D Offline
        D Offline
        Danny Rodriguez
        wrote on last edited by
        #3

        Hrmmm you know what - i didnt think about that.. Maybe I should put a delay between requests - like a random delay to see if that stops the problem.. Good idea! Anymore suggestions? Danny!

        1 Reply Last reply
        0
        • D Danny Rodriguez

          Greetings CP! Well - it appears I've been presented with a roadblock and cant seem to find the problem. Heres the situatio. Ive created an app that has to scann 16000+ servers - for now - all that has to be done is connect and send and receive once asynchronously. I am able to get the entire process down - the problem that occurs is that at random times the app just halts. It just stops connecting to the servers - no exceptions thrown - no nada. Its not a threading problem - unless its a bug in the threadpooling for asychronous socket communications. To draw out some broad strokes about the current scenario Classes MainForm applications main form ConnectionState stores connection information - buffer - socket - server hostname - start time / end time / elapsed time ConnectionManager this object is used in the main form (connection state is not accessed directly) - i start the process with a method called CheckServers() which is passed to a ThreadStart object in the main form for a Thread object named worker - the worker thread is started and is set to a background thread from the main form MessageEventHandler a delegate used to pass the messages from the buffer to controls on the main form I know this is a somewhat complicated issue to deal with over these forums.. but - i have traced every aspect of my code - 2-3 days spent in the debugger watching everything and still no luck. Any suggestions? Danny!

          L Offline
          L Offline
          leppie
          wrote on last edited by
          #4

          Some how I dont think the .NET threadpool is gonna cut that ;p Some other suggestions: - socket buffersizes and timeouts, by default they will wait for ever... - Linger options - Socket options (god knows what they all do....) top secret xacc-ide 0.0.1

          D 3 Replies Last reply
          0
          • L leppie

            Some how I dont think the .NET threadpool is gonna cut that ;p Some other suggestions: - socket buffersizes and timeouts, by default they will wait for ever... - Linger options - Socket options (god knows what they all do....) top secret xacc-ide 0.0.1

            D Offline
            D Offline
            Danny Rodriguez
            wrote on last edited by
            #5

            leppie wrote: Some how I dont think the .NET threadpool is gonna cut that Well instead of using thread pools manually im using them by means of asynchronous communication. to my understand - when communicating asynchronously with sockets (i.e. BeginConnect EndConnect etc etc ) these mechanisms use threadpooling in the background. Now it all depends on how you use these mechanism. For example - my first attempts maxed out the thread pools and i was only able to do 25 connections and blah - it got stuck there. I was able to by pass this with creating only 1 object that would do the main communication. Originally i had created an object which handled the entire connection including buffer / socket as well as the async parts. but for some nutty reason - this method did not prove to work - possible because garbage colleciton - although it was manually called - would not collect the lingering objects which were ready for collection.. leppie wrote: - socket buffersizes and timeouts, by default they will wait for ever... when it comes to this - during asynchronous communications the appropriate exceptions are thrown informing you of these. leppie wrote: - Linger options - Socket options (god knows what they all do....) well alas you have me at this one. right now im not using any socket options - since it seems to be working quite well without them.. ending comments... i took the first suggestion and implemented a random wait interval between each connection to each server. this proved to work perfectly - since that post the application has gone through 4000 servers and its still going - which is by far - further than its gone before. i simply put in a random interval between 1 and 30 seconds. although its a trade off for now - in time - the production system wont have these restrictions (i.e. flood control or worm detection whatever they call it ) Again thanks all for the advice and comments. Also - any more suggestions? p.s. a word on asynchronous sockets... ive test various methods of socket communication - async, sycn, manual thread pooling, custom threading... everything.. ive been able to achieve equal results if not better with the manual threading in comparison to asyhc mechanisms - but it was far trickier to achieve. has anyone implemented a server app - web server? ftp server? irc serveR? anything with async sockets in c#? just curious about your results..

            1 Reply Last reply
            0
            • L leppie

              Some how I dont think the .NET threadpool is gonna cut that ;p Some other suggestions: - socket buffersizes and timeouts, by default they will wait for ever... - Linger options - Socket options (god knows what they all do....) top secret xacc-ide 0.0.1

              D Offline
              D Offline
              Danny Rodriguez
              wrote on last edited by
              #6

              welp! it appears i spoke to soon - the app stopped working yet again - now its either my isp that keeps blocking or something else - i have resorted to fiddling with the socket options.. :D lets see if this works out.. Danny!

              L 1 Reply Last reply
              0
              • D Danny Rodriguez

                welp! it appears i spoke to soon - the app stopped working yet again - now its either my isp that keeps blocking or something else - i have resorted to fiddling with the socket options.. :D lets see if this works out.. Danny!

                L Offline
                L Offline
                leppie
                wrote on last edited by
                #7

                Danny Rodriguez wrote: now its either my isp that keeps blocking or something else Get a port sniffer/packet capture prog and see what happens! I suggest NGSniff + winpcap (only thing that didnt BSOD me). I have a funny feeling something is wrong in the Sockets in .NET, other problems, but if there's one, there bound to be more! I will look into those options and see what I can suggest. You definately want to turn lingering off. Have you tried another threadpool implemeatation perhaps? top secret xacc-ide 0.0.1

                1 Reply Last reply
                0
                • L leppie

                  Some how I dont think the .NET threadpool is gonna cut that ;p Some other suggestions: - socket buffersizes and timeouts, by default they will wait for ever... - Linger options - Socket options (god knows what they all do....) top secret xacc-ide 0.0.1

                  D Offline
                  D Offline
                  Danny Rodriguez
                  wrote on last edited by
                  #8

                  Okay.. the ordeal continues.. I am still receiving the same problem.. Ive set sockets timeout via the SetSocketOptions but it appears to do nothing with asynchronous sockets. so then i moved onto another solution - which was to create a new thread which would wiat for a certain time period to elapse.. once it does it would manually kill the socket. unfornately this did nothing.. also - i contact the isp and the are not doing anything so that idea is out the door.. any suggestions.. the basic problem is setting a timeout on a socket which is being use in async communications.. any suggestion. im starting to get disperate :( Danny!

                  1 Reply Last reply
                  0
                  Reply
                  • Reply as topic
                  Log in to reply
                  • Oldest to Newest
                  • Newest to Oldest
                  • Most Votes


                  • Login

                  • Don't have an account? Register

                  • Login or register to search.
                  • First post
                    Last post
                  0
                  • Categories
                  • Recent
                  • Tags
                  • Popular
                  • World
                  • Users
                  • Groups