socket编程(一)

 通过Socket()函数可以创建两种类型的套接字:字节流套接字 和 数据报套接字 。

  字节流套接字:提供了双向、有序、无重复、且无记录边界的数据流服务。

  数据报套接字:提供了双向的数据流,但是不保证是可靠、有序、无重复的。

而基于 TCP协议(transmission control protocol)和UDP协议 (user data protocol)的应用程序分别使用的是 字节流套接字和 数据报套接字。

 

TCP协议与UDP协议的区别:

 1.TCP 面向连接的,而UDP面向无连接的

 2.两者对消息的可靠传递机制不同。TCP有专门的消息可靠传递保证机制,当接收方收到发送方发送的消息,会自动返回信息告知发送方对方已经收到信息,发送方收到消息传送成功确认消息后,才继续传送,否则一直等待确认消息 。而UDP则没有这样的机制,它只是一直的传送,当有数据丢失时,也不会检测到。

 

 UDP 编程模式(using System.Net 和 using System.Net.Sockets)

socket编程(一) 

 服务器端:

 客户端

 1              UdpClient listener  =   new  UdpClient(listenport); // 提供UDP网络服务
 2              IPEndPoint groupIP  =   new  IPEndPoint(IPAddress.Any,  100 ); // 接受任意IP,端口号为100的网络端点
 3               try
 4              {
 5                   // 无限循环,等待监听 信息
 6                   while  ( true )
 7                  {
 8                       byte [] bytes  =  listener.Receive( ref  groupIP);  // 接受来自端口号为100的信息
 9                       string  strInfo  =  Encoding.GetEncoding( " gb2312 " ).GetString(bytes,  0 , bytes.Length);
10                      MessageBox.Show(strInfo);
11                  }
12              }
13               catch  (Exception e)
14              {
15                  Console.WriteLine(e.ToString());
16              }
17               finally
18              {
19                  listener.Close();
20              }

 在Form1_Load 中调用 StartListen()方法。

 客户端:

 服务器端

1              Socket s  =   new  Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp); // 声明UDP协议的套接字接口
2              IPAddress broadcast  =  IPAddress.Parse(tbxIP.Text.ToString());  // 将TextBox中输入的服务器 IP 转换为 IPAddress类型
3               byte [] sendbuf  =  Encoding.GetEncoding( " gb2312 " ).GetBytes(tbxContent.Text.ToString()); // 将TextBox中输入的内容转换为byte[] 类型
4              IPEndPoint ep  =   new  IPEndPoint(broadcast,  100 );  // 用指定的地址和端口号实例化网络端点,端口号,要与服务器 代码中的端口相同。
5              s.SendTo(sendbuf, ep); // 调用SendTo方法

 这样就可以实现

 socket编程(一)             socket编程(一)

 

Untitled Page 作者: 余意
出处: http://cnblogs.com/zabery
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

你可能感兴趣的:(socket编程)