在VB.NET下利用Socket实现简单的字符串发送接收程序

这篇博客介绍如何在VB.NET环境下利用Socket创建一个简单的通信程序,包括服务器端和客户端。服务器端通过多线程监听127.0.0.1的1024端口,接收并显示客户端发送的字符串,客户端则将文本框输入的内容发送到服务器。源代码可供下载。
先查看MSDN帮助系统,找到socket类,有详细的创建套接字、使用套接字侦听、使用客户端套接字的说明。
打开VS.Net 2003,新建一个VB.Net工程,名称为Server。在界面上添加一个列表框,两个按钮。界面如图所示:

我们使用多线程来实现
先导入命名空间:
Imports System.Net.sockets
Imports System.net
Imports System.Text
Imports System.Threading
定义两个窗体变量
Dim s As Socket = Nothing
Dim t As Thread
新建一个过程,用于处理接收到的Socket数据包
Public Sub WaitData()
        s = New Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp) '''使用TCP协议
        Dim localEndPoint As New IPEndPoint(IPAddress.Parse("127.0.0.1"), 1024)  '''指定IP和Port
        s.Bind(localEndPoint)        '''绑定到该Socket
        s.Listen(100)     '''侦听,最多接受100个连接
        While (True)
            Dim bytes(1024) As Byte   '''用来存储接收到的字节
            Dim ss As Socket = s.Accept()  '''若接收到,则创建一个新的Socket与之连接
            ss.Receive(bytes)    '''接收数据,若用ss.send(Byte()),则发送数据
            ListBox1.Items.Insert(0, Encoding.Unicode.GetString(bytes)) '''将其插入到列表框的第一项之前
            '''若使用Encoding.ASCII.GetString(bytes),则接收到的中文字符不能正常显示
        End While
End Sub
在BtnStart的click事件中,加入如下代码:
 t = New Thread(AddressOf WaitData)  '''建立新的线程
        t.Start()     '''启动线程
        BtnStart.Enabled = False   '''按钮不可用,避免另启线程
在BtnStop的click事件中,加入如下代码:
 Try
            s.Close()     '''关闭Socket
            t.Abort()     '''中止线程
        Catch
        Finally
            BtnStart.Enabled = True   '''启用BtnStart
        End Try
为了防止用户不点击Stop直接退出,而不能使线程结束,则应在窗体的closing事件中,加入如下代码:
 Try
            s.Close()
            t.Abort()
        Catch
        End Try
下面新建一个VB.Net工程,名称为Client。在界面上添加一个文本框,一个按钮。界面如图所示:
先导入命名空间:
Imports System.Net.sockets
Imports System.net
Imports System.Text
在BtnSend的click事件中,加入如下代码:
 Try
            Dim bytes(1024) As Byte
            Dim s = New Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp)
            Dim localEndPoint As New IPEndPoint(IPAddress.Parse("127.0.0.1"), 1024)
            s.Connect(localEndPoint)
            s.Send(Encoding.Unicode.GetBytes(TextBox1.Text))
            s.Close()
        Catch ex As Exception
        End Try
这样,这个小程序就完成了,当然可以添加新的功能,使其功能更强大! 
源代码: 下载
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值