`
king_tt
  • 浏览: 2124026 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

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

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


分享到:
评论

相关推荐

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

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

    实验三Socket通信实验报告.doc

    点对点通信功能 实现网络点对点通讯程序的关键步骤就是实现信息在网络中的发送和接收。数据接收 使用的是Socket,数据发送使用的是NetworkStream。 1.1利用Socket来接收信息 TcpListener tlListen1 = new Tcp...

    vc++ 应用源码包_1

    内含各种例子(vc下各种控件的使用方法、标题栏与菜单栏、工具栏与状态栏、图标与光标、程序窗口、程序控制、进程与线程、字符串、文件读写操作、文件与文件夹属性操作、文件与文件夹系统操作、系统控制操作、程序...

    java源码包---java 源码 大量 实例

     设定字符串为“张三,你好,我是李四”  产生张三的密钥对(keyPairZhang)  张三生成公钥(publicKeyZhang)并发送给李四,这里发送的是公钥的数组字节  通过网络或磁盘等方式,把公钥编码传送给李四,李四接收到...

    java源码包2

     设定字符串为“张三,你好,我是李四”  产生张三的密钥对(keyPairZhang)  张三生成公钥(publicKeyZhang)并发送给李四,这里发送的是公钥的数组字节  通过网络或磁盘等方式,把公钥编码传送给李四,李四接收到...

    java源码包3

     设定字符串为“张三,你好,我是李四”  产生张三的密钥对(keyPairZhang)  张三生成公钥(publicKeyZhang)并发送给李四,这里发送的是公钥的数组字节  通过网络或磁盘等方式,把公钥编码传送给李四,李四接收到...

    java源码包4

     设定字符串为“张三,你好,我是李四”  产生张三的密钥对(keyPairZhang)  张三生成公钥(publicKeyZhang)并发送给李四,这里发送的是公钥的数组字节  通过网络或磁盘等方式,把公钥编码传送给李四,李四接收到...

    vc++ 应用源码包_2

    内含各种例子(vc下各种控件的使用方法、标题栏与菜单栏、工具栏与状态栏、图标与光标、程序窗口、程序控制、进程与线程、字符串、文件读写操作、文件与文件夹属性操作、文件与文件夹系统操作、系统控制操作、程序...

    vc++ 应用源码包_6

    内含各种例子(vc下各种控件的使用方法、标题栏与菜单栏、工具栏与状态栏、图标与光标、程序窗口、程序控制、进程与线程、字符串、文件读写操作、文件与文件夹属性操作、文件与文件夹系统操作、系统控制操作、程序...

    vc++ 应用源码包_5

    内含各种例子(vc下各种控件的使用方法、标题栏与菜单栏、工具栏与状态栏、图标与光标、程序窗口、程序控制、进程与线程、字符串、文件读写操作、文件与文件夹属性操作、文件与文件夹系统操作、系统控制操作、程序...

    vc++ 应用源码包_3

    内含各种例子(vc下各种控件的使用方法、标题栏与菜单栏、工具栏与状态栏、图标与光标、程序窗口、程序控制、进程与线程、字符串、文件读写操作、文件与文件夹属性操作、文件与文件夹系统操作、系统控制操作、程序...

    成百上千个Java 源码DEMO 4(1-4是独立压缩包)

    设定字符串为“张三,你好,我是李四” 产生张三的密钥对(keyPairZhang) 张三生成公钥(publicKeyZhang)并发送给李四,这里发送的是公钥的数组字节 通过网络或磁盘等方式,把公钥编码传送给李四,李四接收到张三编码后...

    成百上千个Java 源码DEMO 3(1-4是独立压缩包)

    设定字符串为“张三,你好,我是李四” 产生张三的密钥对(keyPairZhang) 张三生成公钥(publicKeyZhang)并发送给李四,这里发送的是公钥的数组字节 通过网络或磁盘等方式,把公钥编码传送给李四,李四接收到张三编码后...

    vc++ 开发实例源码包

    内含各种例子(vc下各种控件的使用方法、标题栏与菜单栏、工具栏与状态栏、图标与光标、程序窗口、程序控制、进程与线程、字符串、文件读写操作、文件与文件夹属性操作、文件与文件夹系统操作、系统控制操作、程序...

    JAVA上百实例源码以及开源项目源代码

     设定字符串为“张三,你好,我是李四”  产生张三的密钥对(keyPairZhang)  张三生成公钥(publicKeyZhang)并发送给李四,这里发送的是公钥的数组字节  通过网络或磁盘等方式,把公钥编码传送给李四,李四接收到...

    JAVA上百实例源码以及开源项目

     设定字符串为“张三,你好,我是李四”  产生张三的密钥对(keyPairZhang)  张三生成公钥(publicKeyZhang)并发送给李四,这里发送的是公钥的数组字节  通过网络或磁盘等方式,把公钥编码传送给李四,李四接收到...

Global site tag (gtag.js) - Google Analytics