的TCPListener [英] TCPListener
本文介绍了的TCPListener的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我有一个tcpclient的工作代码,但我似乎无法弄清楚
如何使用tcplistener来连接它。我只想要按下一个按钮并且
听取TCP连接并连接到特定端口,但任何尝试我都会尝试失败....任何帮助都会b awsome
-
-iwdu15
hi i have a working code for a tcpclient, but i cant seemt of figure out how
to use a tcplistener to connect with it. i just want to clck a button and
listen for a TCP conection and conect to a specific port, but any attempt i
try fails....any help would b awsome
--
-iwdu15
推荐答案
发送你的代码,看看我们能做什么做
-----原始消息-----
来自:iwdu15 [mailto:iw **** @ discussion.microsoft.com ]
发表于:2005年9月28日星期三,下午10:37
发布至:microsoft.public.dotnet.languages.vb
会话:TCPListener
主题:TCPListener
你好我有一个tcpclient的工作代码,但我似乎无法搞清楚
如何使用tcplistener连接它来获得
。我只想按一下按钮
和
听取TCP连接并连接到特定端口,但任何
尝试我
尝试失败....任何帮助都会很棒
-
-iwdu15
Send your code to see what we can do
-----Original Message-----
From: iwdu15 [mailto:iw****@discussions.microsoft.com]
Posted At: Wednesday, September 28, 2005 10:37 PM
Posted To: microsoft.public.dotnet.languages.vb
Conversation: TCPListener
Subject: TCPListener
hi i have a working code for a tcpclient, but i cant seemt of figure out
how
to use a tcplistener to connect with it. i just want to clck a button
and
listen for a TCP conection and conect to a specific port, but any
attempt i
try fails....any help would b awsome
--
-iwdu15
好的,这是我试图听的异步代码:
#Region"声明"
Dim homeip As Net.IPAddress
Dim ClientSocket As Net.Sockets.Socket
Dim ASCII As New System.Text.ASCIIEncoding
#End Region
#Region" Listen"
Private Sub btnlisten_Click(ByVal sender As System.Object,ByVal e As
System.EventArgs)处理btnlisten.Click
Call Listen(homeip,我。 txtlistenport.Text)
End Sub
Private Sub Listen(ByVal IP As IPAddress,ByVal port As Integer)
Dim ep As New Net.IPEndPo int(IP,port)
ListenSocket = New Net.Sockets.Socket(AddressFamily.InterNetwork,
SocketType.Stream,ProtocolType.Tcp)
ListenSocket.BeginAccept(AddressOf ListenCallBack,Nothing)
End Sub
Private Sub ListenCallBack(ByVal ar正如IAsyncResult)
尝试
ListenSocket.EndAccept(ar)
''开始接收数据>
Dim bytes(4095)By Byte
ClientSocket.BeginReceive(bytes,0,bytes.Length,
SocketFlags.None,AddressOf ListenReceiveCallBack,bytes)
Catch ex As Exception
Me.rtbinfo.Text + = vbNewLine& ex.Message& vbNewLine
结束尝试
结束子
Private Sub ListenReceiveCallBack(ByVal ar as IAsyncResult)
Dim bytes()As Byte = CType(ar.AsyncState,Byte())
Dim numbytes As Int32 = ListenSocket.EndReceive(ar)
如果numbytes = 0那么
ListenSocket.Shutdown(SocketShutdown.Both)
ListenSocket.Close()
Else
Dim recv As String = ASCII.GetString(bytes,0,numbytes)
''清除缓冲区
Array.Clear(bytes,0,bytes.Length)
''再次开始接收
ClientSocket.BeginReceive( bytes,0,bytes.Length,
SocketFlags.None,AddressOf ListenReceiveCallBack,bytes)
结束如果
结束分
#End Region
谢谢
-iwdu15
ok, heres the code i tried for listening async:
#Region "Declarations"
Dim homeip As Net.IPAddress
Dim ClientSocket As Net.Sockets.Socket
Dim ASCII As New System.Text.ASCIIEncoding
Dim ListenSocket As Net.Sockets.Socket
#End Region
#Region "Listen"
Private Sub btnlisten_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles btnlisten.Click
Call Listen(homeip, Me.txtlistenport.Text)
End Sub
Private Sub Listen(ByVal IP As IPAddress, ByVal port As Integer)
Dim ep As New Net.IPEndPoint(IP, port)
ListenSocket = New Net.Sockets.Socket(AddressFamily.InterNetwork,
SocketType.Stream, ProtocolType.Tcp)
ListenSocket.BeginAccept(AddressOf ListenCallBack, Nothing)
End Sub
Private Sub ListenCallBack(ByVal ar As IAsyncResult)
Try
ListenSocket.EndAccept(ar)
''Begin Receiveing Data
Dim bytes(4095) As Byte
ClientSocket.BeginReceive(bytes, 0, bytes.Length,
SocketFlags.None, AddressOf ListenReceiveCallBack, bytes)
Catch ex As Exception
Me.rtbinfo.Text += vbNewLine & ex.Message & vbNewLine
End Try
End Sub
Private Sub ListenReceiveCallBack(ByVal ar As IAsyncResult)
Dim bytes() As Byte = CType(ar.AsyncState, Byte())
Dim numbytes As Int32 = ListenSocket.EndReceive(ar)
If numbytes = 0 Then
ListenSocket.Shutdown(SocketShutdown.Both)
ListenSocket.Close()
Else
Dim recv As String = ASCII.GetString(bytes, 0, numbytes)
''Clear the buffer
Array.Clear(bytes, 0, bytes.Length)
''Begin Receive Again
ClientSocket.BeginReceive(bytes, 0, bytes.Length,
SocketFlags.None, AddressOf ListenReceiveCallBack, bytes)
End If
End Sub
#End Region
thanks
-iwdu15
您好,
关于您的代码的一些评论。
1.我不知道你是否分配了一些东西给homeip。
2.我不知道你是否将ListenSocket绑定到homeip,并把它放入
听力状态。
3.在接收到数据之前,我没有看到你向ClientSocket分配了什么内容。
4.在ListenReceiveCallBack例行程序中你从
调用EndReceive,而不是ClientSocket。
所以,
1.给homeip分配一些东西。例如,IPAddress.Any。
2.插入~S ListenSocket.Bind(ep)〜和~RistenSocket.Listen(0)〜事先
调用ListenSocket.BeginAccept ()。
3.将~ShopSocket.EndAccept(ar)〜改为~ClientSocket =
ListenSocket.EndAccept(ar)〜。
4.将~ShopSocket.EndReceive~改为~ClientSocket.EndReceive~。
希望这会有所帮助,
罗马
" iwdu15" < IW **** @ discussions.microsoft.com> ó???Yéì/ó???Yéìá×??×?ó??è
$ b $bóì????Y ??:news:B4 *********** *********************** @ microsof t.com ...
Hi,
A few comments about your code.
1. I don''t see whether you assigned something to homeip.
2. I don''t see if you bound ListenSocket to homeip, and put it into
listening state.
3. I don''t see where you assigned something to ClientSocket before
receiving data from it.
4. In ListenReceiveCallBack routine you call EndReceive from
ListenSocket, not ClientSocket.
So,
1.Assign something to homeip. For example, IPAddress.Any.
2. Insert ~ ListenSocket.Bind(ep) ~ and ~ ListenSocket.Listen(0) ~ prior
to call to ListenSocket.BeginAccept().
3. Change ~ ListenSocket.EndAccept(ar) ~ to ~ ClientSocket =
ListenSocket.EndAccept(ar) ~.
4. Change ~ ListenSocket.EndReceive ~ to ~ ClientSocket.EndReceive ~.
Hope this helps,
Roman
"iwdu15" <iw****@discussions.microsoft.com> ó???Yéì/ó???Yéìá × ??×?ó??è
óì???àY??: news:B4**********************************@microsof t.com...
好,继承我试听的异步代码:
#Region声明
Dim homeip As Net.IPAddress
Dim ClientSocket As Net.Sockets.Socket
Dim ASCII As New System。 Text.ASCIIEncoding
Dim ListenSocket As Net.Sockets.Socket
#End Region
#Region" Listen"
Private Sub btnlisten_Click(ByVal sender As System.Object,ByVal e
As System.EventArgs)处理btnlisten.Click
调用Listen(homeip,Me.txtlistenport.Text)
End Sub
Private Sub Listen(ByVal IP As IPAddress,ByVal port As Integer)
Dim ep As New Net.IPEndPoint(IP,port)
ListenSocket = New
Net.Sockets.Socket(AddressFamily.InterNetwork,SocketType.Stream,ProtocolType.Tcp )
ListenSocket.BeginAccept(AddressOf ListenCallBack,Nothing)
End Sub
Private Sub ListenCallBack(ByVal ar as IAsyncResult)
<尝试
ListenSocket.EndAccept(ar)
''开始接收数据
Dim bytes(4095)As Byte
ClientSocket.BeginReceive(bytes,0, bytes.Length,
SocketFlags.None,AddressOf ListenReceiveCallBack,bytes)
Catch ex As Exception> Me.rtbinfo.Text + = vbNewLine& ex.Message& vbNewLine
结束尝试
结束Sub
私有Sub ListenReceiveCallBack(ByVal ar AsAsAsyncResult)
Dim bytes()As Byte = CType (ar.AsyncState,Byte())
Dim numbytes As Int32 = ListenSocket.EndReceive(ar)
如果numbytes = 0那么
ListenSocket.Shutdown(SocketShutdown) .Both)
ListenSocket.Close()
其他
Dim recv As String = ASCII.GetString(bytes,0,numbytes)
/>''清除缓冲区
Array.Clear(bytes,0,bytes.Length)
''再次开始接收
ClientSocket.BeginReceive(bytes,0,bytes。长度,
SocketFlags.None,AddressOf ListenReceiveCallBack,bytes)
结束如果
结束子
#End Region
谢谢
-iwdu15
ok, heres the code i tried for listening async:
#Region "Declarations"
Dim homeip As Net.IPAddress
Dim ClientSocket As Net.Sockets.Socket
Dim ASCII As New System.Text.ASCIIEncoding
Dim ListenSocket As Net.Sockets.Socket
#End Region
#Region "Listen"
Private Sub btnlisten_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnlisten.Click
Call Listen(homeip, Me.txtlistenport.Text)
End Sub
Private Sub Listen(ByVal IP As IPAddress, ByVal port As Integer)
Dim ep As New Net.IPEndPoint(IP, port)
ListenSocket = New Net.Sockets.Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp)
ListenSocket.BeginAccept(AddressOf ListenCallBack, Nothing)
End Sub
Private Sub ListenCallBack(ByVal ar As IAsyncResult)
Try
ListenSocket.EndAccept(ar)
''Begin Receiveing Data
Dim bytes(4095) As Byte
ClientSocket.BeginReceive(bytes, 0, bytes.Length,
SocketFlags.None, AddressOf ListenReceiveCallBack, bytes)
Catch ex As Exception
Me.rtbinfo.Text += vbNewLine & ex.Message & vbNewLine
End Try
End Sub
Private Sub ListenReceiveCallBack(ByVal ar As IAsyncResult)
Dim bytes() As Byte = CType(ar.AsyncState, Byte())
Dim numbytes As Int32 = ListenSocket.EndReceive(ar)
If numbytes = 0 Then
ListenSocket.Shutdown(SocketShutdown.Both)
ListenSocket.Close()
Else
Dim recv As String = ASCII.GetString(bytes, 0, numbytes)
''Clear the buffer
Array.Clear(bytes, 0, bytes.Length)
''Begin Receive Again
ClientSocket.BeginReceive(bytes, 0, bytes.Length,
SocketFlags.None, AddressOf ListenReceiveCallBack, bytes)
End If
End Sub
#End Region
thanks
-iwdu15
这篇关于的TCPListener的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文