欢迎光临极品网,更多、更新的资源信息尽在Jpinw.Com!本站所有信息资源每日更新新的内容,请大家继续关注www.Jpinw.com!如果觉得本站还不错,对您有帮助,别忘了向您的朋友推荐本站!请记好本站网址:http://www.Jpinw.com,网站发展靠大家多多的支持!!!

极品网 极品课件 极品论文 极品文学 极品游戏 极品美容 极品手机资源 极品股票

#
免费资源: 免费域名 | 免费空间 | 免费推广 | 免费邮箱 | 免费硬盘 | 免费论坛 | 免费留言 | 免费统计 | 在线投稿 | 更多...
电脑学院: 操作系统 | 安全相关 | 网页设计 | 编程开发 | 建站经验 | 服务器类 | 黑客攻防 | 菜鸟入门 | 教你网赚 | 更多...
文章导航: 网赚学堂 | 网赚秘笈 | 网赚三维 | 网赚先锋 | 网赚资讯 | 感悟网赚 | 众生百态 | 经典美文 | 范文中心 | 更多...
图酷天下: 时事图酷 | 娱乐图酷 | 搞笑图酷 | 时尚图酷 | 体育图酷 | 另类经典 | 论文资源 | 课件下载 | 文学知识 | 更多...

您现在的位置: 极品网 >> 电脑学院 >> 编程开发 >> .NET >> 教程正文

.Net中的socket编程—聊天程序            【字体:
.Net中的socket编程—聊天程序
作者:佚名    教程来源:不详    点击数:    更新时间:2008-6-8    

 








.Net中的socket编程—聊天程序。
  socket是套接字的英文名称,主要是用于网络编程,在以前vb6时要想使用socket进行程序开发最麻烦的是要自己声明socket动态库中的相关函数,而这些函数的参数多不说,还是用c语言编写的,要让它门在vb中运行最头痛的就是要进行函数参数的转换。经常是为了测试一个参数的转换是否正确而花上大半天的功夫。

  不过现在不同了有了.net,它的System.Net.Sockets 命名空间包含 Windows 套接字接口的托管实现。而System.Net 命名空间中的所有其他网络访问类都建立在该套接字实现之上,有就是说使用System.Net.Sockets和System.Net 命名空间中类可以完成通过socket动态库中的几乎全部功能,但是又避免了参数转化的麻烦。(.NET Framework的 Socket 类是 Winsock32 API 提供的套接字服务的托管代码版本。大多数情况下,Socket 类方法只是将数据封送到它们的本机 Win32 副本中并处理任何必要的安全检查。)

  Socket 类支持两种基本模式:同步和异步。在同步模式中,对执行网络操作的函数(如 Send 和 Receive)的调用一直等到操作完成后才将控制返回给调用程序。在异步模式中,这些调用立即返回。本文将讨论同步模式,因为同步模式是基础。

  程序说明:(本文中的程-序需要用户编写两个实例才可以完成。)

  发送方:在使用套接字通信之前,必须使用协议和网络地址信息初始化套接字。Socket 类的构造函数具有指定套接字用来建立连接的地址族、套接字类型和协议类型的参数。然后指定要发送到目标机器的ip地址和端口号。在将要发送数据发送的字节数组传递到 Socket 类的数据发送方法Send 和 SendTo之一本文使用send方法。最后关闭socket终止发送。


  '发送端代码
Public Class Form1
Inherits System.Windows.Forms.Form
Private Sub Button1_Click(ByVal sender As System.Object,
  ByVal e As System.EventArgs) Handles Button1.Click
Dim bytes(1024) As Byte'声明字节数组
Dim sender1 As New System.Net.Sockets.Socket
  (Net.Sockets.AddressFamily.InterNetwork,
  Net.Sockets.SocketType.Stream,
  Net.Sockets.ProtocolType.Tcp)
  '初始化socket
Dim msg As Byte() =
  System.Text.Encoding.ASCII.GetBytes(TextBox1.Text)
    '对发送的数据进行编码
'***************************
'指定ip和端口
Dim ipHostInfo As System.Net.IPHostEntry =
  System.Net.Dns.Resolve("d")
Dim ipAddress As System.Net.IPAddress =
  ipHostInfo.AddressList(0)
Dim ipe As New System.Net.IPEndPoint(ipAddress, 11000)
'**********************
sender1.Connect(ipe)'建立连接
Dim bytesSent As Integer = sender1.Send(msg)'发送数据
'(((((((((
'关闭socket
sender1.Shutdown(Net.Sockets.SocketShutdown.Both)
sender1.Close()
')))))))
End Sub
End Class
接收端:和发送端一样先需要初始化套接字,指定接收方ip和端口号(必须与发送方相同),通过Listen方法监听指定的接收方ip和端口号,申请连接,使用Receive接收数据,在将数据传给字节数组,最后关闭socket。


  接收端
Public Class Form1
Inherits System.Windows.Forms.Form
Dim listener As New System.Net.Sockets.Socket
  (Net.Sockets.AddressFamily.InterNetwork,
  Net.Sockets.SocketType.Stream,
  Net.Sockets.ProtocolType.Tcp)
  '初始socket
Private Sub Form1_Load(ByVal sender As System.Object,
  ByVal e As System.EventArgs) Handles MyBase.Load
'指定ip和端口
Dim ipHostInfo As System.Net.IPHostEntry =
  System.Net.Dns.Resolve(System.Net.Dns.GetHostName())
Dim ipAddress As System.Net.IPAddress =
  ipHostInfo.AddressList(0)
Dim localEndPoint As New System.Net.IPEndPoint(ipAddress, 11000)
listener.Bind(localEndPoint)
listener.Listen(10)
End Sub
Private Sub Button1_Click(ByVal sender As System.Object,
     ByVal e As System.EventArgs) Handles Button1.Click
Dim bytes() As Byte = New [Byte](1024) {}
Dim handler As System.Net.Sockets.Socket =
  listener.Accept()'建立连接请求
Dim data As String = Nothing
bytes = New Byte(1024) {}
Dim bytesRec As Integer = handler.Receive(bytes)'接收数据
data += System.Text.Encoding.ASCII.GetString(bytes, 0, bytesRec)
TextBox1.Text = data
Dim msg As Byte() = System.Text.Encoding.ASCII.GetBytes(data)
handler.Shutdown(Net.Sockets.SocketShutdown.Both)
handler.Close()
End Sub
End Class
说明:本程序未进行异常处理,所以不可以连续点"接收"键,其原因是让读者快速掌握.net中的socket编程基础(如要进行异常处理,请加入try块,详情见msdn)。由于本代码的中数据编码使用的是英文编码,所以不支持中文字体(通过对编码的修改可以发送中文,见msdn)。本文的目的不是教各位编写聊天程序,所以在看本文时请从socket方面进行思考。本程序在局域网和internet

[1] [2] 下一篇

 

教程录入:admin    责任编辑:admin 
  • 上一篇教程:

  • 下一篇教程:
  • 发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
    最新热点 最新推荐 相关教程
    VB.Net查找程序的前一个运行
    VB.NET的新的面向对象能力
    VB.NET中访问数据方法大全
    VB.net 编码规范(也适用于C
    VB.NET 的新特点:变量,类型
    VB.NET:给Visual Basic带来
    Visual Basic .NET中的语言创
    完整的VB.NET的语法解析程序
    创新中的VB.NET
    将你的Visual Basic 6.0移植
      网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)
    极品网
    | 设为首页 | 加入收藏 | 友情链接 | 版权声明 |
    极品网

    Copyright 2006 Jpinw.com 极品网

    备案号:浙ICP备07010375号

    极品网