|
||||||||||||||||||||||
|
||||||||||||||||||||||
|
|||||
| .Net中的socket编程—聊天程序 | |||||
| 作者:佚名 教程来源:不详 点击数: 更新时间:2008-6-8 | |||||
|
'发送端代码 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 |
|||||
|
|||||
| 教程录入: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条。评论内容只代表网友观点,与本站立场无关!) |