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。在界面上添加一个列表框,两个按钮。界面如图所示:

  我们使用多线程来实现

  先导入命名空间:

 

双击代码全选
1
2
3
4
5
Imports System.Net.sockets
Imports System.net
Imports System.Text
Imports System.Threading
定义两个窗体变量

 

  Dim s As Socket = Nothing

  Dim t As Thread

  新建一个过程,用于处理接收到的Socket数据包

 

双击代码全选
1
2
3
4
5
6
7
8
9
10
11
12
13
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事件中,加入如下代码:

 

双击代码全选
1
2
3
4
5
6
7
8
9
10
11
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事件中,加入如下代码:

 

双击代码全选
1
2
3
4
5
Try
      s.Close()
      t.Abort()
    Catch
    End Try

 

  下面新建一个VB.Net工程,名称为Client。在界面上添加一个文本框,一个按钮。界面如图所示:

  先导入命名空间:

  Imports System.Net.sockets

  Imports System.net

  Imports System.Text

  在BtnSend的click事件中,加入如下代码:

 

双击代码全选
1
2
3
4
5
6
7
8
9
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

 

  这样,这个小程序就完成了,当然可以添加新的功能,使其功能更强大!


相关教程