微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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数据包

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事件中,加入如下代码:

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事件中,加入如下代码

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

  Imports System.Net.sockets

  Imports System.net

  Imports System.Text

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

9
      Dim bytes(1024) As Byte
      Dim s = New Socket(AddressFamily.InterNetwork,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
  这样,这个小程序就完成了,当然可以添加新的功能,使其功能更强大!

原文地址:https://www.jb51.cc/vb/259148.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐