登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

樱之花

叶散的时候,你明白欢聚;花谢的时候,你明白青春.

 
 
 

日志

 
 
关于我

分类中“我的实验室”是我在日常工作中的一些知识总结,有些写的比较匆忙,可能大家在阅读时会产生困扰,后期有时间我会重新整理编辑,谢谢大家的到访,您们的支持是我前进的动力!

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

2008-02-18 15:52:04|  分类: .NET/C# |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

先查看MSDN帮助系统,找到socket类,有详细的创建套接字、使用套接字侦听、使用客户端套接字的说明。

打开VS.Net 2003,新建一个VB.Net工程,名称为Server。在界面上添加一个列表框,两个按钮。界面如图所示:

在VB.NET下利用Socket实现简单的字符串发送接收程序 - 魔术师 - 樱之花 yinzhihua2008

我们使用多线程来实现

先导入命名空间:

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

在VB.NET下利用Socket实现简单的字符串发送接收程序 - 魔术师 - 樱之花 yinzhihua2008

先导入命名空间:

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

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

  评论这张
 
阅读(1547)| 评论(0)

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2018