用VB2010的socket编程,编了一个通信程序,可以实现在一台电脑上相互通信,但将服务器端和客户端分别放到两台电脑时则不能相互通信

Spatacus Spatacus 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
求大神解决
服务器端程序
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
...全文

相关推荐

用VB实现两台电脑相互通讯

本项目通过VB编写了一个服务器和客户端的通讯程序,允许两台计算机之间交换数据。下面将详细介绍如何使用VB实现这一功能。

xzh135923

在VS2010中实现基本Socket客户端代码的完整示例

Visual Studio 2010 是微软公司推出的一款功能强大的集成开发环境(IDE),它支持多种编程语言和框架,为开发者提供了从创建到调试和部署应用程序的一站式服务。这一章节将带领读者了解 Visual Studio 2010 的基本界面布局、关键功能以及如何使用它来创建一个简单的项目。

不吃香菜的鱼

深入理解与实现UDP通信程序(VS2010)

UDP(User Datagram Protocol,用户数据报协议)是一种无连接的网络协议,提供了一种快速且不可靠的数据传输服务。与TCP(Transmission Control Protocol)不同,UDP在数据传输前不需要建立连接,数据包的发送和接收之间没有维护状态的开销,这使得UDP更适合于对实时性要求较高、可以容忍一定程度丢包的应用场景。以下是UDP协议的几个关键特点及其应用场景:无连接:无需建立连接即可直接发送数据,这大大减少了延迟,适合于实时应用。效率高。

Kay Lam

VB.NET 2010 可直接运行的TCP双向通信演示(含客户端+服务端完整工程)

提供两个独立可编译的VB.NET 2010项目:TCPServer.sln 和 TCPClient.sln,开箱即用,无需修改配置即可运行。服务端支持多客户端连接监听,客户端可发起连接、发送字符串、接收服务端响应;双方均采用委托机制配合Invoke实现跨线程UI更新,彻底规避WinForms中常见的“线程间操作无效”异常。所有资源文件(.resx)、配置文件(app.config)、项目设置(.vbproj、.settings)和解决方案元数据(.suo)均已预置齐全,包含Form1.Designer.vb

cc789

经典 VB.net 里面的socket通讯范例

- 当有客户端连接请求时,Accept方法会阻塞等待,直到新的连接到达,返回一个新的Socket用于与客户端通信。

wenluderen
评论 5
收藏 已收藏
分享
返回顶部
Spatacus
VB 16,718 成员 110,520 内容