VB.NET通过Socket实现字符串发送与接收程序
来源:优易学  2011-12-10 21:10:44   【优易学:中国教育考试门户网】   资料下载   IT书店

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

责任编辑:小草

文章搜索:
 相关文章
热点资讯
资讯快报
热门课程培训