首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > VB Dotnet >

关于VB.net 多线程 SERVER端SOCKET程序建立的有关问题

2012-08-14 
关于VB.net 多线程 SERVER端SOCKET程序建立的问题服务器端建立程序,与多个客户端程序通讯,每当启动一个客

关于VB.net 多线程 SERVER端SOCKET程序建立的问题
服务器端建立程序,与多个客户端程序通讯,每当启动一个客户端程序,服务器端就开启一个线程,并在其中创建一个socket与该客户端的socket通讯  

问题:

1。服务器端是否可以建立不同的监听端口,就像VB中的winsocket控件一样创建若干控件监听不同的端口以区分连接的客户端(各客户通过不同的端口向服务器连接)。
2.若使用监听同一端口的方法(大多如此),可以根据AcceptTcpClient的socket实例得到客户端的IP地址区分不同的客户端,但是如何控制非本系统的客户端连接进入?
3.各客户端的数据接收可以在进程中完成,但是如何对不同的客户端进行数据发送呢?



[解决办法]
我对socket编程不了解,帮你顶!
[解决办法]
控制非本系统的客户端连接,应该可以通过数据加密的方式来完成,加密不正确的东西,直接关闭它的连接就OK了。
[解决办法]
Dim s As Socket
Public Sub mainListener()

Try

While True
s = objListener.AcceptSocket
clientSocket = s
Dim objinfo As New SocketInfo
objinfo.IP = clientSocket.RemoteEndPoint.ToString
objinfo.Socket = clientSocket
dataThread = New Thread(AddressOf WaitData) '''建立新的线程
dataThread.IsBackground = True
dataThread.Start(objinfo)

Thread.Sleep(500)

' s.Close()
End While
'End If

s.Close()

Catch ex As Exception


End Try


 Public Sub WaitData(ByVal objSocketInfo As Object)


Dim strKacode As String
Dim strKatype As String
Dim strReceive As String

Dim client As Socket = clientSocket

Dim objinfo As New SocketInfo
objinfo = CType(objSocketInfo, SocketInfo)

Try


While (True)

client.Receive(bytes)
//接收
strReceive = Encoding.UTF8.GetString(bytes, 0, bytes.Length)
//返回
client.Send(sendBuff)


Array.Clear(bytes, 0, bytes.Length) '
Array.Clear(sendBuff, 0, sendBuff.Length)



End While


Catch ex As Exception


End Try



End Sub

[解决办法]
参考

热点排行