Re: Issue with multiple threads and System.Net.Sockets.Socket



lets work out 1 here then you sould be able to work with more
Remember each thead can only be used 1 time before it is trash
so
first off your app has a 200 loop count, I am pritty sure you can only throw
25 threads at a time.




private thd as system.threading.thread

private eip as string
private sip as string
private structure iprange
dim startip as string
dim endip as string
end structure



public sub New
dim ssplit as object

ips = new iprange
ips.startip = 192.168.0.250
ips.endip = 192.168.0.254

ssplit = split(ips.end,".")
eip = ssplit(3)
ssplit = split(ips.startip ,".")
sip= ssplit(3)
for i = sip to eip

thd = new system.threading.thread addressof
thd_tick(left(ips.endip,(len(ips.endip)-len(ssplit(3)) & i)


next

end sub
private sub thd_tick(byval ip as string)
'do your stuff here with the ip address
end sub


this is just a quick dirty example. I do not know if it even works because I
am coding in OutLook.. Lol it should give you the right idea.
I want to ask again why are you using an array() to hold your threads? Look
in to the thread appartment, I have never used it so I can not give you an
example. I have never needed to use it. But the appartment I think takes
care of handling the thread throwing. Meaning if you have 50 threads
waiting to go, it will only throw 25 when 1 finishes it throws another.. I
might be pulling that out of my ass. But I think that is what it is for.


Now what that code is doing is for every ip address it is creating a new
thread.
I want to say you have a max number of threads of 25. Not 100% on that. but
I do know there is a max.
so you gotta make sure your checking
that code is not above.


About the sockets..
I dont know if this is a problem but I would assume it would be.. It to make
sure that the port your trying to use is already not in use by another
thread.
You half to wait for them to time out? is ack/nak on. If so then the socket
is it waiting for a comply packet? Are you closing the socket out?


I would like to see a thread appartment in action. If you want some help
with any of this you can send you code to DevGuy@xxxxxxxxxxx



gotta run and get the kid from daycare. But let me know if any of this
helps.


DevGuy







"Stressed Out Developer" <StressedOutDeveloper@xxxxxxxxxxxxxxxxxxxxxxxxx>
wrote in message news:415969FA-0E4F-41B0-BA0A-79106FB00CCA@xxxxxxxxxxxxxxxx
> We have an application that has a 200 count loop that does the following:
>
> ' Each time thru the loop we pass the next IP Address is a range (aka
> 192.168.4.50 thru 192.168.4.254)
> Try
> If mUIO_Threads(i) Is Nothing Then
> mUIO_Threads(i) = New System.Threading.Thread(AddressOf
> mUIO_DAQ(i).InitDAQ)
> mUIO_Threads(i).Name = mUIO_DAQ(i).UIO_IPAddr
> mUIO_Threads(i).IsBackground = False
> Else
> If Not mUIO_Threads(i) Is Nothing Then
> mUIO_Threads(i).Abort()
> While mUIO_Threads(i).ThreadState=Threading.ThreadState.Running
> End While
> mUIO_Threads(i) = Nothing
> End If
> mUIO_Threads(i) = New System.Threading.Thread(AddressOf
> mUIO_DAQ(i).InitDAQ)
> mUIO_Threads(i).Name = mUIO_DAQ(i).UIO_IPAddr
> mUIO_Threads(i).IsBackground = False
> End If
> mUIO_Threads(i).Start()
>
> stime = Environment.TickCount
> While (Environment.TickCount < stime + 100) And (Not
> mUIO_DAQ(i).UIO_Opened)
> System.Windows.Forms.Application.DoEvents()
> End While
>
> Catch ex As Threading.ThreadStateException
> Debug.WriteLine("Poll: Threading Error <" & ex.ToString & ">")
> Catch ex As Exception
> Debug.WriteLine("Poll: Exception Error <" & ex.ToString & ">")
> End Try
>
>
>
>
> The call to "InitDAQ" creates a TCPIP socket and calls
> System.Net.Sockets.Socket.Connect as follows:
>
> Me.m_Socket = New
> System.Net.Sockets.Socket(Net.Sockets.AddressFamily.InterNetwork,
> SocketType.Stream, Net.Sockets.ProtocolType.IP)
> ipAddressEndPoint = New
> System.Net.IPEndPoint(IpAddressArg.Parse(pchIpAddressArg), nPort)
> OpenSockets = SIOMM_OK
> Me.m_Socket.Connect(ipAddressEndPoint)
>
>
> Some of the IP Addresses passed are not online and therefore will fail to
> connect. Our test has ip 192.168.4.50 valid and also 192.168.4.253 and
> 192.168.4.254 valid. All others in the range were offline. We get a
> connection working with 192.168.4.50 and eventually after 5 minutes get
> the
> other two also. If we cut the range down to 192.168.4.250 to
> 192.168.4.254
> we connect to 253 and 254 immediately on the first time throught the loop.
> If we adjust the range to 192.168.4.240 to 192.168.4.254, we don't connect
> the first time through the loop but we do get it the second time through.
> It
> is almost as if we can only get data from the first 10 attempted sockets
> and
> have to wait for them to timeout before we can get data from the next ten.
> We have tried setting the socket to Non-Blocking but that didn't seem to
> help. We do see spurts of 10 threads exiting at one time. Any ideas
>


.



Relevant Pages

  • Re: Parallel processing questions
    ... instead of from ActiveX exe. ... Did you mean that while the server socket is sending ... > RealHostName As String ... >Private Type SMTPRemoteServer ...
    (microsoft.public.vb.general.discussion)
  • Re: Clarification please
    ... Sorry writing the last post i did figure out the answer, in my loop as i ... read the string i escape the loop on reading a 0, ... > connection, send data, close the socket and repeat. ...
    (microsoft.public.win32.programmer.networks)
  • Re: Winter Madness - Passing Python objects as Strings
    ... But if you already have a queue, you may put other objects there (instead ... box really is that silly loop and the processor really is not fast at all. ... I thought of putting the string in a list, with the record type being the ... a socket, so it has to be a string. ...
    (comp.lang.python)
  • Proxy Server
    ... Private clientSocket As Socket ... Shared Sub MainAs String) ... Dim tcplistener As New TcpListener, ...
    (microsoft.public.de.german.entwickler.dotnet.vb)
  • Re: How can I detect a carriage return using java.net
    ... Angus wrote: ... String line = bis.readLine; ... But code never gets out of while loop. ... Note that readLine first return null when the socket is ...
    (comp.lang.java.programmer)

Loading