Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/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 客户端/服务器应用程序-服务器端未接收数据_Vb.net_Sockets - Fatal编程技术网

Vb.net 客户端/服务器应用程序-服务器端未接收数据

Vb.net 客户端/服务器应用程序-服务器端未接收数据,vb.net,sockets,Vb.net,Sockets,我正在尝试创建一个简单的客户机/服务器应用程序。非常基本-客户端连接到服务器,客户端向服务器发送消息-服务器接收消息并向任何其他连接的客户端广播 正如我所说的,它应该是简单的,并且是为了更好地理解自我教育 据我所知,客户端正在发送数据,我认为难点在于服务器接收数据包。有人介意让我知道我的代码是否有明显的错误吗 非常感谢 客户 Imports System.Net ' for IPAddress Imports System.Net.Sockets 'for TcpListener Imports

我正在尝试创建一个简单的客户机/服务器应用程序。非常基本-客户端连接到服务器,客户端向服务器发送消息-服务器接收消息并向任何其他连接的客户端广播

正如我所说的,它应该是简单的,并且是为了更好地理解自我教育

据我所知,客户端正在发送数据,我认为难点在于服务器接收数据包。有人介意让我知道我的代码是否有明显的错误吗

非常感谢

客户

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


Module testClient
''' <summary>
''' CLIENT
''' </summary>
''' <remarks></remarks>
Sub Main()
    Dim aString As String
    Dim port As Integer
    Dim localAddr As IPAddress
    Dim client As TcpClient
    Dim stream As NetworkStream
    Dim tempSocket
    Try
        port = 2302
        localAddr = IPAddress.Loopback
        Do
            Console.Write("are you ready to connect to your server? (y/n) ")
            aString = Console.ReadLine()


        Loop Until aString = "y" Or aString = "n"


        Do
            If aString = "y" Then
                'Create a TcpClient.
                client = New TcpClient(localAddr.ToString, port)
                Console.Write(" Connencted to : " & IPAddress.Parse(CType(client.Client.LocalEndPoint, IPEndPoint).Address.ToString).ToString & " ")


            End If
            Console.Write("Ready to quit? (y/n)")
            aString = Console.ReadLine()
            If aString <> "y" Or aString <> "n" Then
                'this is where we send a message to the server
                Dim endPoint As New IPEndPoint(localAddr, port)
                tempSocket = New Socket(endPoint.AddressFamily, SocketType.Stream, ProtocolType.Tcp)
                tempSocket.Connect(endPoint)
                stream = New NetworkStream(tempSocket)
                Dim outStream As Byte() = Text.Encoding.ASCII.GetBytes(aString)
                stream.Write(outStream, 0, outStream.Count)
                stream.Flush()
            End If
        Loop Until aString = "y"
    Catch ex As Exception
        Console.Write(ex.ToString)
    End Try


End Sub


End Module
为IPAddress导入System.Net
为TcpListener导入System.Net.Sockets
导入系统文本
模块测试客户端
''' 
“客户”
''' 
''' 
副标题()
像细绳一样模糊
将端口设置为整数
Dim localAddr作为IPAddress
作为TcpClient的Dim客户端
作为网络流的Dim流
暗温插座
尝试
端口=2302
localAddr=IPAddress.Loopback
做
控制台。写入(“您准备好连接到服务器了吗?(y/n)”)
aString=Console.ReadLine()
循环直到aString=“y”或aString=“n”
做
如果aString=“y”,则
'创建一个TcpClient。
客户端=新的TcpClient(localAddr.ToString,端口)
Console.Write(“连接到:”&IPAddress.Parse(CType(client.client.LocalEndPoint,IPEndPoint).Address.ToString.ToString&“”)
如果结束
控制台。写入(“准备退出?(y/n)”)
aString=Console.ReadLine()
如果加上“y”或“n”,则
'这是我们向服务器发送消息的地方
将端点设置为新的IPEndPoint(localAddr,端口)
tempSocket=新套接字(endPoint.AddressFamily、SocketType.Stream、ProtocolType.Tcp)
tempSocket.Connect(端点)
流=新网络流(tempSocket)
Dim扩展为字节()=Text.Encoding.ASCII.GetBytes(aString)
stream.Write(溢出,0,溢出.计数)
stream.Flush()
如果结束
循环直到收敛=“y”
特例
Console.Write(例如ToString)
结束尝试
端接头
端模块
服务器:

Imports System.Net
Imports System.Net.Sockets
Imports System.Text


Module testServer
Dim port As Integer
Dim localAddr As IPAddress
Dim server As TcpListener
Dim client As TcpClient
Dim bytesFrom As Byte()
''' <summary>
''' Server
''' </summary>
''' <remarks></remarks>
Dim tempSocket
Sub Main()


    Try
        port = 2302
        localAddr = IPAddress.Loopback


        server = New TcpListener(localAddr, port)




        server.Start()
        Console.WriteLine("Server ready")



        client = server.AcceptTcpClient
        Console.WriteLine("Connected to " & IPAddress.Parse(CType(client.Client.LocalEndPoint, IPEndPoint).Address.ToString).ToString)


        getmessage()




    Catch ex As Exception
        Console.WriteLine(ex.ToString)
    End Try
End Sub


Sub getmessage()


    Dim endPoint As New IPEndPoint(localAddr, port)
    Dim clientSocket As New TcpClient
    Try


        clientSocket.Connect(endPoint)
        Dim Stream As NetworkStream = clientSocket.GetStream()
        Stream.Read(bytesFrom, 0, bytesFrom.Count)
        Dim dataFromClient As String = System.Text.Encoding.ASCII.GetString(bytesFrom)
        dataFromClient = dataFromClient.Substring(0, dataFromClient.IndexOf("$"))
        printOut(dataFromClient)
    Catch ex As Exception
        Console.WriteLine(ex.ToString)
    Finally
        clientSocket.Close()
    End Try


End Sub
Sub printOut(msg As String)
    Console.WriteLine(msg)
End Sub


End Module
导入系统.Net
导入System.Net.Sockets
导入系统文本
模块测试服务器
将端口设置为整数
Dim localAddr作为IPAddress
作为TcpListener的Dim服务器
作为TcpClient的Dim客户端
Dim bytesFrom作为字节()
''' 
''服务器
''' 
''' 
暗温插座
副标题()
尝试
端口=2302
localAddr=IPAddress.Loopback
服务器=新的TcpListener(localAddr,端口)
server.Start()
Console.WriteLine(“服务器就绪”)
client=server.AcceptTcpClient
Console.WriteLine(“连接到”&IPAddress.Parse(CType(client.client.LocalEndPoint,IPEndPoint).Address.ToString.ToString)
getmessage()
特例
控制台写入线(例如ToString)
结束尝试
端接头
子getmessage()
将端点设置为新的IPEndPoint(localAddr,端口)
Dim clientSocket作为新的TCP客户端
尝试
clientSocket.Connect(端点)
作为NetworkStream=clientSocket.GetStream()的Dim流
Stream.Read(bytesFrom,0,bytesFrom.Count)
Dim dataFromClient As String=System.Text.Encoding.ASCII.GetString(bytesFrom)
dataFromClient=dataFromClient.Substring(0,dataFromClient.IndexOf(“$”)
打印输出(来自客户端的数据)
特例
控制台写入线(例如ToString)
最后
clientSocket.Close()
结束尝试
端接头
子打印输出(消息作为字符串)
控制台写入线(msg)
端接头
端模块

WCF呢?设置起来简单多了,套接字已经为您完成了。您有任何与此相关的资源吗-干杯谢谢-我会在我的大脑中挖掘C#记忆