的TCPListener [英] TCPListener

查看:43
本文介绍了的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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆