关于winsock的问题,谁能给我发一个源程序?急!! 我写的一个winsock 程序,连接都没有问题,一到发送的时候用senddata方法就出问题,不知什么原因,谁能给我一个完整的源程序(包括客户端和服务器端的),谢谢了!我的mail: [email protected] 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 要创建一个 TCP 服务器,请按照以下步骤执行: 创建新的 Standard EXE 工程。将缺省窗体的名称改为 frmServer。将窗体的标题改为“TCP 服务器”。在窗体中放入一个 Winsock 控件,并将它的名字改为 tcpServer。在窗体上添加两个 TextBox 控件。将第一个命名为 txtSendData,第二个为 txtOutput。为窗体添加如下的代码。 Private Sub Form_Load()'将 LocalPort 属性设置为一个整数。'然后调用 Listen 方法。tcpServer.LocalPort = 1001tcpServer.Listen frmClient.Show '显示客户端的窗体。End SubPrivate Sub tcpServer_ConnectionRequest _(ByVal requestID As Long)'检查控件的 State 属性是否为关闭的。'如果不是,'在接受新的连接之前先关闭此连接。If tcpServer.State <> sckClosed Then _tcpServer.Close'接受具有 requestID 参数的'连接。tcpServer.Accept requestIDEnd SubPrivate Sub txtSendData_Change()'名为 txtSendData 的 TextBox 控件中'包含了要发送的数据。当用户往文本框中'键入数据时,使用 SendData 方法'发送输入的字符串。tcpServer.SendData txtSendData.TextEnd SubPrivate Sub tcpServer_DataArrival _(ByVal bytesTotal As Long)'为进入的数据声明一个变量。'调用 GetData 方法,并将数据赋予名为 txtOutput '的 TextBox 的 Text 属性。Dim strData As StringtcpServer.GetData strDatatxtOutput.Text = strDataEnd Sub上面的步骤创建了一个简单的服务器应用程序。为了使它能够工作,还必须为它创建一个客户端的应用程序。要创建 TCP 客户端,请按照以下步骤执行: 在工程中添加一个新的窗体,将其命名为 frmClient。将窗体的标题改为“TCP Client”。在窗体中添加一个 Winsock 控件,并将其命名为 tcpClient。在 frmClient 中添加两个 TextBox 控件。将第一个命名为 txtSend,第二个为 txtOutput。在窗体上放一个 CommandButton 控件,并将其命名为 cmdConnect。将 CommandButton 控件的标题改为 Connect。在窗体中添加如下的代码。 重点 必须将 RemoteHost 属性值修改为您的计算机的名字。Private Sub Form_Load() 'Winsock 控件的名字为 tcpClient。 '注意:要指定远程主机,可以使用 ' IP 地址(例如:"121.111.1.1"),也可以使用 '计算机的“好听的名字”如下所示。 tcpClient.RemoteHost = "RemoteComputerName" tcpClient.RemotePort = 1001End SubPrivate Sub cmdConnect_Click() '调用 Connect 方法,初始化连接。 tcpClient.ConnectEnd SubPrivate Sub txtSendData_Change() tcpClient.SendData txtSend.TextEnd SubPrivate Sub tcpClient_DataArrival _(ByVal bytesTotal As Long) Dim strData As String tcpClient.GetData strData txtOutput.Text = strDataEnd Sub 上面的代码创建了一个简单的客户/服务器模式的应用程序。我们可以将两者都运行起来:运行工程,然后单击“连接”。在两个窗体之一的 txtSendData 文本框中键入文本,可以看到同样的文字将出现在另一个窗体的 txtOutput 文本框中。接受多个连接请求上面设计的基本服务器只能接受一个连接请求。通过创建控件数组,使用一个控件也可以同时接受多个连接请求。利用这种方法,不需要关闭连接,而只需创建新的控件实例(通过设置其索引属性),然后在新的实例上调用 Accept 方法。下面的代码假定名为 sckServer 的窗体上有一个 Winsock 控件,它的 Index 属性被设置为 0;因此控件是控件数组的一部分。在声明部分,声明了一个模块级的变量 intMax。在窗体的 Load 事件中,intMax 被设置为 0,数组中第一个控件的 LocalPort 属性被设置为 1001。然后调用控件的 Listen 方法,使之成为“监听”控件。在连接请求到达时,代码将检测 Index 是否为 0(“监听”控件的值)。如果为 0,监听控件将增加 intMax 的值,并使用该号码来创建新的控件实例。然后,使用新的控件实例接受连接请求。Private intMax As LongPrivate Sub Form_Load() intMax = 0 sckServer(0).LocalPort = 1001 sckServer(0).ListenEnd SubPrivate 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 IfEnd Sub msdn就有一个完全可能通信的例子 问题是我手头没有msdn ,不然我就不问了, 拜托给我发一个可以用的例子, 第一次用vb, 谢谢!! zyg0(影子(努力吃饭中)) : 你发的我已看过, 我就是这样做的,可是senddata和getData是就是出错, 不知什么原因, 好像全世界都在用这个方法, 可是我用就出错了. //你发的我已看过, 我就是这样做的,可是senddata和getData是就是出错, 不知什么原因, 好像全世界都在用这个方法, 可是我用就出错了.是不是你的网络设置的问题? 不换页打印时如何调用局域网中计算机上的打印机 我该用那种 grid 控件? mapisession与outlook 如何只保留数据值的小数点后两位,有这样的函数吗??? 出100分找答案,关于richtextbox的 VBA可以对outlook express 操作吗???? 求助!!急!!! 大虾 帮帮忙啊 vb 编程 一个两仟(2000)分的问题!!!大家帮帮忙. 又是chm的问题!谢!! 难!!不同进程间的模态窗口显示问题
将缺省窗体的名称改为 frmServer。
将窗体的标题改为“TCP 服务器”。
在窗体中放入一个 Winsock 控件,并将它的名字改为 tcpServer。
在窗体上添加两个 TextBox 控件。将第一个命名为 txtSendData,第二个为 txtOutput。
为窗体添加如下的代码。
Private Sub Form_Load()
'将 LocalPort 属性设置为一个整数。
'然后调用 Listen 方法。
tcpServer.LocalPort = 1001
tcpServer.Listen
frmClient.Show '显示客户端的窗体。
End SubPrivate Sub tcpServer_ConnectionRequest _
(ByVal requestID As Long)
'检查控件的 State 属性是否为关闭的。
'如果不是,
'在接受新的连接之前先关闭此连接。
If tcpServer.State <> sckClosed Then _
tcpServer.Close
'接受具有 requestID 参数的
'连接。
tcpServer.Accept requestID
End SubPrivate Sub txtSendData_Change()
'名为 txtSendData 的 TextBox 控件中
'包含了要发送的数据。当用户往文本框中
'键入数据时,使用 SendData 方法
'发送输入的字符串。
tcpServer.SendData txtSendData.Text
End SubPrivate Sub tcpServer_DataArrival _
(ByVal bytesTotal As Long)
'为进入的数据声明一个变量。
'调用 GetData 方法,并将数据赋予名为 txtOutput
'的 TextBox 的 Text 属性。
Dim strData As String
tcpServer.GetData strData
txtOutput.Text = strData
End Sub上面的步骤创建了一个简单的服务器应用程序。为了使它能够工作,还必须为它创建一个客户端的应用程序。要创建 TCP 客户端,请按照以下步骤执行: 在工程中添加一个新的窗体,将其命名为 frmClient。
将窗体的标题改为“TCP Client”。
在窗体中添加一个 Winsock 控件,并将其命名为 tcpClient。
在 frmClient 中添加两个 TextBox 控件。将第一个命名为 txtSend,第二个为 txtOutput。
在窗体上放一个 CommandButton 控件,并将其命名为 cmdConnect。
将 CommandButton 控件的标题改为 Connect。
在窗体中添加如下的代码。
重点 必须将 RemoteHost 属性值修改为您的计算机的名字。Private Sub Form_Load()
'Winsock 控件的名字为 tcpClient。
'注意:要指定远程主机,可以使用
' IP 地址(例如:"121.111.1.1"),也可以使用
'计算机的“好听的名字”如下所示。
tcpClient.RemoteHost = "RemoteComputerName"
tcpClient.RemotePort = 1001
End SubPrivate Sub cmdConnect_Click()
'调用 Connect 方法,初始化连接。
tcpClient.Connect
End SubPrivate Sub txtSendData_Change()
tcpClient.SendData txtSend.Text
End SubPrivate Sub tcpClient_DataArrival _
(ByVal bytesTotal As Long)
Dim strData As String
tcpClient.GetData strData
txtOutput.Text = strData
End Sub
上面设计的基本服务器只能接受一个连接请求。通过创建控件数组,使用一个控件也可以同时接受多个连接请求。利用这种方法,不需要关闭连接,而只需创建新的控件实例(通过设置其索引属性),然后在新的实例上调用 Accept 方法。下面的代码假定名为 sckServer 的窗体上有一个 Winsock 控件,它的 Index 属性被设置为 0;因此控件是控件数组的一部分。在声明部分,声明了一个模块级的变量 intMax。在窗体的 Load 事件中,intMax 被设置为 0,数组中第一个控件的 LocalPort 属性被设置为 1001。然后调用控件的 Listen 方法,使之成为“监听”控件。在连接请求到达时,代码将检测 Index 是否为 0(“监听”控件的值)。如果为 0,监听控件将增加 intMax 的值,并使用该号码来创建新的控件实例。然后,使用新的控件实例接受连接请求。Private intMax As LongPrivate Sub Form_Load()
intMax = 0
sckServer(0).LocalPort = 1001
sckServer(0).Listen
End SubPrivate 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
你发的我已看过, 我就是这样做的,可是senddata和getData是就是出错, 不知什么原因, 好像全世界都在用这个方法, 可是我用就出错了.
是不是你的网络设置的问题?