Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/video/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vb.net 使用ThreadPool同时连接到多个TCP服务器 你试过注释ping函数的某些部分吗?如果完全删除网络访问,多线程是否工作?如果你只删除stream.Write调用?@didierc,你问的问题还不是很清楚,但是当我用一些其他代码代替ping过程时,多线_Vb.net_Multithreading_Networking_Tcp - Fatal编程技术网

Vb.net 使用ThreadPool同时连接到多个TCP服务器 你试过注释ping函数的某些部分吗?如果完全删除网络访问,多线程是否工作?如果你只删除stream.Write调用?@didierc,你问的问题还不是很清楚,但是当我用一些其他代码代替ping过程时,多线

Vb.net 使用ThreadPool同时连接到多个TCP服务器 你试过注释ping函数的某些部分吗?如果完全删除网络访问,多线程是否工作?如果你只删除stream.Write调用?@didierc,你问的问题还不是很清楚,但是当我用一些其他代码代替ping过程时,多线,vb.net,multithreading,networking,tcp,Vb.net,Multithreading,Networking,Tcp,使用ThreadPool同时连接到多个TCP服务器 你试过注释ping函数的某些部分吗?如果完全删除网络访问,多线程是否工作?如果你只删除stream.Write调用?@didierc,你问的问题还不是很清楚,但是当我用一些其他代码代替ping过程时,多线程可以完美地工作。如果我要删除网络访问,tcpclient将无法连接到服务器,这将引发异常,并且如果我要注释出流。写入,我将无法获得我正在寻找的响应,因为服务器要求我在返回响应之前发送&HFE Imports System.IO Imports

使用ThreadPool同时连接到多个TCP服务器
你试过注释ping函数的某些部分吗?如果完全删除网络访问,多线程是否工作?如果你只删除stream.Write调用?@didierc,你问的问题还不是很清楚,但是当我用一些其他代码代替ping过程时,多线程可以完美地工作。如果我要删除网络访问,tcpclient将无法连接到服务器,这将引发异常,并且如果我要注释出流。写入,我将无法获得我正在寻找的响应,因为服务器要求我在返回响应之前发送&HFE
Imports System.IO
Imports System.Threading
Imports System.Net.Sockets
Imports System.Text

Module Module1
<MTAThread()>
Sub Main()
    Dim maxthreads As Integer = 10
    ThreadPool.SetMaxThreads(maxthreads, maxthreads)
    Dim serverlist() As String = File.ReadAllLines("final.txt")

    Dim servernum As New CountdownEvent(serverlist.GetUpperBound(0) + 1)
    For Each a In serverlist
        Dim args(1) As Object
        args(0) = a
        args(1) = servernum
        ThreadPool.QueueUserWorkItem(New WaitCallback(AddressOf ping), args)
    Next
    servernum.Wait()


    Console.ReadLine()
End Sub

Public Sub ping(ByVal server() As Object)

    Dim serverinfo() As String = Split(server(0), ",")
    Dim socketclient As New TcpClient
    Console.WriteLine(serverinfo(0))

    Try
        socketclient.Connect(serverinfo(0), serverinfo(1))
    Catch ex As Exception
        If socketclient.Connected = False Then
            Throw New Exception("Server Offline")
        Else
            Throw New Exception("Unknown Error Occured")
        End If
    End Try

       Dim stream As NetworkStream = socketclient.GetStream
        stream.ReadTimeout = 1000
        stream.WriteTimeout = 1000
        Dim sendBytes As [Byte]() = {&HFE}
        stream.Write(sendBytes, 0, sendBytes.Length)
        Dim bytes(421) As Byte
        stream.Read(bytes, 0, CInt(421))
        socketclient.Close()
        Dim trimbytes(bytes.Length - 3) As Byte
        Array.Copy(bytes, 3, trimbytes, 0, bytes.Length - 3)
        Dim returndata As String = Encoding.BigEndianUnicode.GetString(trimbytes)

        Dim sb As New System.Text.StringBuilder
        For i As Integer = 1 To 241 Step 2
            If trimbytes(i) <> 0 Then
                sb.Append(ChrW(BitConverter.ToInt16(trimbytes, i)))
            End If
        Next i
        Dim message() As String = sb.ToString.Split("§")

        'Write processed server information to the console
        Console.WriteLine("Received -->" & message(1) & " " & message(2) & " | " & serverinfo(0))

        server(1).signal()



End Sub
End Module
Parallel.ForEach(serverlist, _
             Sub(currentElement)
                 ping(currentElement)
             End Sub)