为什么我的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 > 0 Then<BR> i = 0<BR> RecvStr = ""<BR> While i < Count<BR> RecvStr += Buf(i)<BR> i += 1<BR> End While<BR> MsgRecvRichTextBox.AppendText(RecvStr & Chr(10) & 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 > 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>
页:
[1]
