VB.net 2010 视频教程 VB.net 2010 视频教程 python基础视频教程
SQL Server 2008 视频教程 c#入门经典教程 Visual Basic从门到精通视频教程
当前位置:
首页 > VB.net教程 >
  • 在VB.NET下利用Socket实现简单的字符串发送接收程序

先查看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
这样,这个小程序就完成了,当然可以添加新的功能,使其功能更强大! 

 

相关教程