Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

nostrinkes

conexões simultaneas na internet

Recommended Posts

Estou com um problema em um codigo pois não sei como faço para ele conectar testando varias proxy ao mesmo tempo em um servidor.

Por exemplo..

 

Tenho um loop que testa de uma em uma a cada giro. funciona certinho mais assim fica muito lento em uma lista de 1000.. passando uma por segundo media.

 

 

Preciso de uma ideia de como faço para aumentar o numero de testes..

 

Eu teria que fazer array com a conexão e as proxy? ou tem algum outro metodo.

 

Fiquei meio que perdido.

 

 

 

Algo em vb.net

Sou iniciante

obrigado

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não entendi muito bem, que tipo de conexão é essa que você está fazendo? Consegue colocar um pedaço do código?

 

Valeu!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Opa obrigado desde já Oenning...

 

Seria um teste de proxy http normal.. eu consegui fazer o codigo mais ele testa de uma em uma a cada refresh do Application.DoEvents() como voce me ensinou.

 

até ai esta indo bem... mais neste caso ou em outros que exigem varias conexões simultaneas eu apanho.

eu uso a lista vinda de um combobox no exemplo ai coloquei só uma pra mostrar que funciona mais mesmo no loop utilizando a lista ele vai de um em um... não sei se seria o caso de usar array se for tenho que estudar como fazer isto..

 

Imagem Postada

 

---------------------------------------///---------------------------------------------------

 

Imports System.Text
Imports System.IO
Imports System.Net
Public Class Form1

	Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
		timeoutbox.SelectedIndex = 0
	End Sub


	Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
		Dim contador As Integer
		Dim Quebra As String = Chr(13) & Chr(10)
		For contador = 0 To Proxy.Items.Count

			Application.DoEvents()
			If Proxy.SelectedIndex = Proxy.Items.Count - 1 Then
				Proxy.SelectedIndex = 0
			Else
				Proxy.SelectedIndex += 1
			End If

			Try
				Dim proxyObject As New WebProxy(Proxy.Text)
				Dim request As Net.HttpWebRequest = DirectCast(Net.WebRequest.Create("http://www.fi.com.br/ip"), Net.HttpWebRequest)
				request.Proxy = proxyObject
				request.Timeout = timeoutbox.Text
				Dim response As Net.HttpWebResponse = DirectCast(request.GetResponse(), Net.HttpWebResponse)
				Boas.Text += Proxy.Text & Quebra
			Catch ex As Exception
				Resultado.Text = ex.Message
			End Try
		Next

	End Sub

Compartilhar este post


Link para o post
Compartilhar em outros sites

Acho que eu entendi, voce quer testar todos os proxys do combobox e nao um por um, selecionando, eh isso?

 

Voce pode fazer um loop no combo, assim:

for(int i = 0; i < combobox.Items.Count; ++i)
{
object o = combobox.Items[i];
string displayText = o.ToString();
// Process the object depending on the type
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Então Oenning a ideia mesmo seria abrir mais de uma conexão no loop para agilizar o processo.. tendo mais de uma conexão aberta ele iria rodar mais rapido.. por isto pensei em fazer um array de uma conexão e deixar correndo no loop.

Abrindo a cada passagem do loop vamos supor 10 conexões testando o proxy. assim passaria de 10 em 10...e no combo iria rodando os index

 

Sera que é assim que é usado? existe muitos programas neste estilo. estou tentando fazer este mais pra praticar. quero aprender.

 

O loop que me passou não entendi ele parece estar em c# em sei pouco em vb comecei a uma semana.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ta, deixa eu ver se eu entendi. Você tem 10 proxys e quer testar todos simultaneamente?

Ou você quer simplesmente testar os 10 proxys sem que o usuário tenha que ficar selecionando no combo, pois é isso que seu código está fazendo hoje.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Seria assim tenho 1000 proxy no combo...queria testar de uma só vez sem intervensão do usuario 10 em 10. conforme fosse testada iria rolando os index do combo.

Assim teria que abrir 10 conexões simultaneas ..isto seria para ir mais rapido, se passar como esta no codigo fica muito lento de uma em uma.

 

Se eu abrir 10 conexões e mesmo sem terminar o teste teria algo como buffer para ficar as conexões para poder chamar mais 10 ?...

Ficando em fila o combo iria rodar a cada teste feito..

 

obrigado

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você vai ter que usar thread.

Sua thread vai ter um método que recebe por parâmetro o proxy e testa a conexão, assim você pode iniciar 10 threads e testar 10 proxys simultaneamente.

 

Para saber mais sobre thread, veja aqui:

http://fdweb.com.br/trabalhando-com-multithread-no-c/

Compartilhar este post


Link para o post
Compartilhar em outros sites

obrigado a ideia é esta mesma.. andei estudando sobre as threads quebrei bem a cabeça..

fiz um teste pra ver se conseguia fazer 3 threads deu certo..

só tive um problema é que só inicia a segunda depois que termina a primeira assim por diante.

 

 

 

Imports System.Threading

Public Class Form1
	Delegate Sub my1Delegate()
	'Delegate Sub my2Delegate()
	'Delegate Sub my3Delegate()
	Dim Thread_1 As Thread = New Thread(AddressOf invocado1)
	Dim Thread_2 As Thread = New Thread(AddressOf invocado2)
	Dim Thread_3 As Thread = New Thread(AddressOf invocado3)
	Private Sub invocado1()
		If Me.InvokeRequired Then
			Me.BeginInvoke(New my1Delegate(AddressOf num_1))
		End If
	End Sub
	Private Sub invocado2()
		If Me.InvokeRequired Then
			Me.BeginInvoke(New my1Delegate(AddressOf num_2))
		End If
	End Sub
	Private Sub invocado3()
		If Me.InvokeRequired Then
			Me.BeginInvoke(New my1Delegate(AddressOf num_3))
		End If
	End Sub
	'-------------------------------------------------------
	'-------------------------------------------------------
	'-------------------------------------------------------
	Private Sub num_1()

		For i As Integer = 0 To 10000
			Label1.Text = i
			Label1.Refresh()
			'Application.DoEvents()
		Next
		' Me.Label1.Text = second(TimeOfDay)
	End Sub
	Private Sub num_2()

		For i As Integer = 0 To 10000 Step (3)
			Label2.Text = i
			Label2.Refresh()
		Next
	End Sub
	Private Sub num_3()
		For i As Integer = 0 To 10000 Step (5)
			Label3.Text = i
			Label3.Refresh()
		Next
	End Sub

	Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
		Thread_1.Start()
		Thread_2.Start()
		Thread_3.Start()
	End Sub

   
End Class

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.