用VB2010的socket编程,编了一个通信程序,可以实现在一台电脑上相互通信,但将服务器端和客户端分别放到两台电脑时则不能相互通信
求大神解决
服务器端程序
Imports System.IO
Imports System.Threading
Imports System.Net
Imports System.Net.Sockets
Public Class Form1
Dim serverThread As Thread
Dim tcpListener As TcpListener
Dim netStream As NetworkStream
Dim rdStream As StreamReader
Dim wtStream As StreamWriter
Dim clientSocket As Socket
Private Sub Listen()
Dim clientMsg As String
tcpListener = New TcpListener(1111)
Try
tcpListener.Start()
clientSocket = tcpListener.AcceptSocket()
If clientSocket.Connected Then
lstClient.Items.Add("new user")
netStream = New NetworkStream(clientSocket)
rdStream = New StreamReader(netStream)
wtStream = New StreamWriter(netStream)
End If
While (True)
clientMsg = rdStream.ReadLine()
If clientMsg = "Exit" Then
Exit Sub
End If
lstClient.Items.Add(clientMsg)
End While
Catch ex As SocketException
MessageBox.Show("无法打开端口")
Catch ex As IOException
Catch ex As ThreadAbortException
Catch ex As Exception
MessageBox.Show(ex.Message)
End Try
End Sub
Private Sub EndListen()
If (Not netStream Is Nothing) Then
serverThread.Abort()
tcpListener.Stop()
End If
End Sub
Private Sub btnStart_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnStart.Click
Try
serverThread = New Thread(AddressOf Listen)
serverThread.Start()
Catch ex As Exception
MessageBox.Show(ex.Message)
End Try
End Sub
Private Sub Form1_Disposed(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Me.Disposed
EndListen()
End Sub
Private Sub send_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles send.Click
Try
wtStream.WriteLine(TextBox1.Text)
wtStream.Flush()
Catch ex As Exception
MessageBox.Show("无法发送消息")
End Try
End Sub
Private Sub out_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles out.Click
End
End Sub
End Class
客户端程序
Imports System.IO
Imports System.Net
Imports System.Net.Sockets
Public Class Form1
Dim tcpClient As TcpClient
Dim netStream As NetworkStream
Dim rdStream As StreamReader
Dim wtStream As StreamWriter
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
End Sub
Private Sub btnConnect_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnConnect.Click
Try
tcpClient = New TcpClient("localhost", 1111)
netStream = tcpClient.GetStream()
rdStream = New StreamReader(netStream)
wtStream = New StreamWriter(netStream)
Catch ex As Exception
MessageBox.Show("无法连接服务器")
End Try
End Sub
Private Sub btnSend_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnSend.Click
Try
wtStream.WriteLine(txtMsg.Text)
wtStream.Flush()
Catch ex As Exception
MessageBox.Show("无法发送消息")
End Try
End Sub
Private Sub Form1_Disposed(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Me.Disposed
wtStream.WriteLine("Exit")
wtStream.Flush()
End Sub
Private Sub TextBox1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox1.Click
TextBox1.Text = rdStream.ReadLine()
End Sub
End Class