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#记忆