fily1314 发表于 2007-7-18 15:04

为什么我的TcpClient只能发送一次

<P>客户端代码如下:<BR><BR>    Private th As Threading.Thread<BR>    Private tcpc As System.Net.Sockets.TcpClient<BR><BR>    Private Sub ConnectBt_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ConnectBt.Click<BR>        Try<BR>            tcpc = New System.Net.Sockets.TcpClient(TcpAddrTextBox.Text, CInt(TcpPortTextBox.Text))<BR>            th = New System.Threading.Thread(New System.Threading.ThreadStart(AddressOf MyListen))<BR>            th.Start()<BR>        Catch ex As Exception<BR>            MessageBox.Show(ex.Message.ToString)<BR>        End Try<BR>    End Sub</P>
<P>    Private Sub SendBt_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles SendBt.Click<BR>        Try<BR>            Dim tcpStream As Net.Sockets.NetworkStream = tcpc.GetStream<BR>            Dim DataStr As String = MsgSendTextBox.Text</P>
<P>            Dim reqStream As New IO.StreamWriter(tcpStream)<BR>            reqStream = New IO.StreamWriter(tcpStream)<BR>            reqStream.Write(DataStr)<BR>            reqStream.Flush()<BR>        Catch ex As Exception<BR>            MessageBox.Show(ex.Message.ToString)<BR>        End Try<BR>    End Sub</P>
<P>    Private Sub MyListen()<BR>        Try<BR>            Dim ReadStream As IO.StreamReader<BR>            Dim Count As Integer<BR>            Dim i As Integer<BR>            Dim RecvStr As String<BR>            Dim tcpStream As Net.Sockets.NetworkStream<BR>            While True<BR>                tcpStream = tcpc.GetStream<BR>                ReadStream = New IO.StreamReader(tcpStream)<BR>                Dim Buf(1023) As Char<BR>                Count = ReadStream.Read(Buf, 0, 1024)<BR>                If Count &gt; 0 Then<BR>                    i = 0<BR>                    RecvStr = ""<BR>                    While i &lt; Count<BR>                        RecvStr += Buf(i)<BR>                        i += 1<BR>                    End While<BR>                    MsgRecvRichTextBox.AppendText(RecvStr &amp; Chr(10) &amp; Chr(13))<BR>                End If<BR>            End While<BR>        Catch ex As Exception<BR>            MessageBox.Show(ex.Message.ToString)<BR>        End Try<BR>    End Sub<BR><BR><BR><BR><BR>服务器端代码如下:<BR><BR>    Private th As Threading.Thread<BR>    Private tcpl As System.Net.Sockets.TcpListener<BR>    Private sSocket As System.Net.Sockets.Socket</P>
<P>    Private Sub StartBt_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles StartBt.Click<BR>        th = New System.Threading.Thread(New System.Threading.ThreadStart(AddressOf MyListen))<BR>        th.Start()<BR>    End Sub</P>
<P>    Private Sub MyListen()<BR>        Try<BR>            Dim ipAddress As System.Net.IPAddress = System.Net.Dns.GetHostEntry(System.Net.Dns.GetHostName).AddressList(0)<BR>            tcpl = New System.Net.Sockets.TcpListener(ipAddress, CInt(TcpPortTextBox.Text))</P>
<P>            tcpl.Start()<BR>            Dim RecvStr As String<BR>            Dim Count As Integer<BR>            Dim i As Integer<BR>            While True<BR>                RecvStr = ""<BR>                sSocket = tcpl.AcceptSocket()<BR>                Dim MyBuffer(1024) As Byte</P>
<P>                Count = sSocket.Receive(MyBuffer)</P>
<P>                If Count &gt; 0 Then<BR>                    RecvStr = ""<BR>                    For i = 0 To Count - 1<BR>                        RecvStr += Chr(MyBuffer(i))<BR>                    Next<BR>                     Dim Array() As Byte = System.Text.ASCIIEncoding.ASCII.GetBytes(RecvStr)<BR>                    sSocket.Send(Array, Array.Length, Net.Sockets.SocketFlags.None)<BR>                End If</P>
<P>            End While<BR>        Catch ex As Exception<BR>            MsgBox(ex.Message.ToString)<BR>        End Try<BR>    End Sub<BR><BR><BR>代码实现的功能很简单,客户端向服务器发送一段字符串,服务器收到后再发回来,但是不知道为什么客户端连接上以后,只能发送和接收一次,再次发送就没反应了,这过程tcpc并没有关闭连接啊,兄弟们帮忙看看是服务器的问题还是客户端的问题。</P>

fily1314 发表于 2007-7-21 11:55

[em11]555555...<BR>发了这么多天咋都米人理呢

bygg 发表于 2007-7-21 16:31

你的MyListen()方法中,是每发送一次就得重新连接一次.那你发送一次就关闭一次呢??<br>

fily1314 发表于 2007-7-23 14:04

哦 <BR>谢谢版主大大<BR>现在可以了

页: [1]

编程论坛