先查看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实现简单的字符串发送接收程序
点对点通信功能 实现网络点对点通讯程序的关键步骤就是实现信息在网络中的发送和接收。数据接收 使用的是Socket,数据发送使用的是NetworkStream。 1.1利用Socket来接收信息 TcpListener tlListen1 = new Tcp...
内含各种例子(vc下各种控件的使用方法、标题栏与菜单栏、工具栏与状态栏、图标与光标、程序窗口、程序控制、进程与线程、字符串、文件读写操作、文件与文件夹属性操作、文件与文件夹系统操作、系统控制操作、程序...
设定字符串为“张三,你好,我是李四” 产生张三的密钥对(keyPairZhang) 张三生成公钥(publicKeyZhang)并发送给李四,这里发送的是公钥的数组字节 通过网络或磁盘等方式,把公钥编码传送给李四,李四接收到...
设定字符串为“张三,你好,我是李四” 产生张三的密钥对(keyPairZhang) 张三生成公钥(publicKeyZhang)并发送给李四,这里发送的是公钥的数组字节 通过网络或磁盘等方式,把公钥编码传送给李四,李四接收到...
设定字符串为“张三,你好,我是李四” 产生张三的密钥对(keyPairZhang) 张三生成公钥(publicKeyZhang)并发送给李四,这里发送的是公钥的数组字节 通过网络或磁盘等方式,把公钥编码传送给李四,李四接收到...
设定字符串为“张三,你好,我是李四” 产生张三的密钥对(keyPairZhang) 张三生成公钥(publicKeyZhang)并发送给李四,这里发送的是公钥的数组字节 通过网络或磁盘等方式,把公钥编码传送给李四,李四接收到...
内含各种例子(vc下各种控件的使用方法、标题栏与菜单栏、工具栏与状态栏、图标与光标、程序窗口、程序控制、进程与线程、字符串、文件读写操作、文件与文件夹属性操作、文件与文件夹系统操作、系统控制操作、程序...
内含各种例子(vc下各种控件的使用方法、标题栏与菜单栏、工具栏与状态栏、图标与光标、程序窗口、程序控制、进程与线程、字符串、文件读写操作、文件与文件夹属性操作、文件与文件夹系统操作、系统控制操作、程序...
内含各种例子(vc下各种控件的使用方法、标题栏与菜单栏、工具栏与状态栏、图标与光标、程序窗口、程序控制、进程与线程、字符串、文件读写操作、文件与文件夹属性操作、文件与文件夹系统操作、系统控制操作、程序...
内含各种例子(vc下各种控件的使用方法、标题栏与菜单栏、工具栏与状态栏、图标与光标、程序窗口、程序控制、进程与线程、字符串、文件读写操作、文件与文件夹属性操作、文件与文件夹系统操作、系统控制操作、程序...
设定字符串为“张三,你好,我是李四” 产生张三的密钥对(keyPairZhang) 张三生成公钥(publicKeyZhang)并发送给李四,这里发送的是公钥的数组字节 通过网络或磁盘等方式,把公钥编码传送给李四,李四接收到张三编码后...
设定字符串为“张三,你好,我是李四” 产生张三的密钥对(keyPairZhang) 张三生成公钥(publicKeyZhang)并发送给李四,这里发送的是公钥的数组字节 通过网络或磁盘等方式,把公钥编码传送给李四,李四接收到张三编码后...
内含各种例子(vc下各种控件的使用方法、标题栏与菜单栏、工具栏与状态栏、图标与光标、程序窗口、程序控制、进程与线程、字符串、文件读写操作、文件与文件夹属性操作、文件与文件夹系统操作、系统控制操作、程序...
设定字符串为“张三,你好,我是李四” 产生张三的密钥对(keyPairZhang) 张三生成公钥(publicKeyZhang)并发送给李四,这里发送的是公钥的数组字节 通过网络或磁盘等方式,把公钥编码传送给李四,李四接收到...
设定字符串为“张三,你好,我是李四” 产生张三的密钥对(keyPairZhang) 张三生成公钥(publicKeyZhang)并发送给李四,这里发送的是公钥的数组字节 通过网络或磁盘等方式,把公钥编码传送给李四,李四接收到...