在服务器上用tcp/ip协议与多个客户端通讯,服务器上是为每个客户端开一个端口好,还是用同一个端口好?

时间:2021-09-02 16:12:48
在服务器上用tcp/ip协议与多个客户端通讯,服务器上是为每个客户端开一个端口好,还是用同一个端口好?

具体的说就是:服务器上要为每个客户端建立一个winsock控件,这些控件可以共用同一个端口(我试过,可以用),也可以一个控件占用一个端口。

不知道这样有什么不同,对性能上有什么影响。
我的软件环境是:可能有20个客户端,最大可能有254台客户端,不知道用那种方式好。

5 个解决方案

#1


在服务器上用同一个端口好,像网站一样,均访问同一个端口80
在服务器上不用虚耗内存,使用同一个端口编程简单直观,
如果能想到在服务器上使用线程,那就更好效率

#2


从性能上讲应该没有明显的影响,但是从系统资源,及编程,监控方便程度来讲来还用同一个端口好。

#3


回复 fs_windy(飛龍) :我是用vb写的,好像vb无法控制线程。
一  请教关于vb中如何使用线程
二  在vb的环境中,您认为共用端口好还是独立好

#4


VB中的线程好像要用ActiveX DLL来实现吧
还是共同端口好,

#5


Private intMax As Long

Private Sub Form_Load()
   intMax = 0
   sckServer(0).LocalPort = 1001
   sckServer(0).Listen
End Sub

Private Sub sckServer_ConnectionRequest _
(Index As Integer, ByVal requestID As Long)
   If Index = 0 Then
      intMax = intMax + 1
      Load sckServer(intMax)
      sckServer(intMax).LocalPort = 0
      sckServer(intMax).Accept requestID
      Load txtData(intMax)
   End If
End Sub

winsock本来就是一个ocx支持多线程。不必手工写,用动态加载的控件数组,就可以了。上面是msdn的一个介绍,具体参见《Using the Winsock Control》“Accepting More than One Connection Request”

#1


在服务器上用同一个端口好,像网站一样,均访问同一个端口80
在服务器上不用虚耗内存,使用同一个端口编程简单直观,
如果能想到在服务器上使用线程,那就更好效率

#2


从性能上讲应该没有明显的影响,但是从系统资源,及编程,监控方便程度来讲来还用同一个端口好。

#3


回复 fs_windy(飛龍) :我是用vb写的,好像vb无法控制线程。
一  请教关于vb中如何使用线程
二  在vb的环境中,您认为共用端口好还是独立好

#4


VB中的线程好像要用ActiveX DLL来实现吧
还是共同端口好,

#5


Private intMax As Long

Private Sub Form_Load()
   intMax = 0
   sckServer(0).LocalPort = 1001
   sckServer(0).Listen
End Sub

Private Sub sckServer_ConnectionRequest _
(Index As Integer, ByVal requestID As Long)
   If Index = 0 Then
      intMax = intMax + 1
      Load sckServer(intMax)
      sckServer(intMax).LocalPort = 0
      sckServer(intMax).Accept requestID
      Load txtData(intMax)
   End If
End Sub

winsock本来就是一个ocx支持多线程。不必手工写,用动态加载的控件数组,就可以了。上面是msdn的一个介绍,具体参见《Using the Winsock Control》“Accepting More than One Connection Request”