0

ロード時にプログラムがフリーズします。最初は想定どおりに機能していましたが、ソリューションをクリーンアップしてビルドした後、ロード時にのみフリーズします。奇妙な部分は、フリーズするだけで、キャッチの例外メッセージが表示されないことです。

これが私が使用したクラスファイルです

Imports System.Net ' for IPAddress
Imports System.Net.Sockets 'for TcpListener

Public Class clientSocket
Dim aString As String
Dim port As Integer 'this is the port number
Dim localAddr As IPAddress ' this is the IP address
Dim client As TcpClient ' This is for the TCP/IP Protocol
Dim clientListener As TcpListener

Public Function startSocket() As String
    Try
        'define the two values for your Server
        port = 1234
        localAddr = IPAddress.Loopback 'loopbak = 127.0.0.1 = myself
        clientListener = New TcpListener(localAddr, 4321)
        client = New TcpClient(localAddr.ToString, port)
        Return "Connected to the server"
    Catch ex As Exception
        Return ex.Message
    End Try
End Function

Public Function receive() As String
    Try
        clientListener.Start()
        Dim mySocket As Socket
        mySocket = clientListener.AcceptSocket()
        Dim recieveBuff(225) As Byte
        mySocket.Receive(recieveBuff, recieveBuff.Length, SocketFlags.None)
        Dim str As String = System.Text.Encoding.ASCII.GetString(recieveBuff, 0, recieveBuff.Length).Trim(Microsoft.VisualBasic.ChrW(0))
        Return str
        mySocket.Receive(recieveBuff, recieveBuff.Length, SocketFlags.None)
        str = System.Text.Encoding.ASCII.GetString(recieveBuff, 0, recieveBuff.Length).Trim(Microsoft.VisualBasic.ChrW(0))
        clientListener.Stop()
    Catch exp As Exception
        Return "Exception: " + exp.Message
    End Try
End Function
End Class
4

2 に答える 2

0
mySocket = clientListener.AcceptSocket()

これらの行は、ソケットが受け入れられるまでそれ以上のアクションをブロックします。ソケットが受け入れられるまでコードをブロックします。ブロッキングを防ぐためにスレッドを使用する

于 2013-05-12T17:55:20.673 に答える
0

またはBeginAcceptSocketを使用しますが、受信コードをコールバックに移動する必要があります。

于 2013-05-12T18:04:11.173 に答える