UDP不属于面向连接的通信,在选择使用协议的时候,选择UDP必须要谨慎。在网络质量令人十分不满意的环境下,UDP协议数据包丢失会比较严重。但是由于UDP的特性:它不属于连接型协议,因而具有资源消耗小,处理速度快的优点,所以通常音频、视频和普通数据在传送时使用UDP较多,因为它们即使偶尔丢失一两个数据包,也不会对接收结果产生太大影响。比如我们聊天用的ICQ和QQ就是使用的UDP协议。
我们通过UDP进行信息收发的时候,没有严格客户端和服务端的区别,它不同于UDP,UDP 必须建立可靠连接之后才可以通信,而UDP随时都可以给指定的ip和端口所对应进程发送消息。UDP发送消息时需要绑定自己IP 和 端口号,接收消息的时候没有特殊限制,只要有人给自己发送,自己在线,就可以接收。

服务端程序:

  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Threading.Tasks;
  6. using System.Net.Sockets;
  7. using System.Net;
  8. using System.Threading;
  9. namespace UDP_Server
  10. {
  11. class Program
  12. {
  13. static Socket server;
  14. static void Main(string[] args)
  15. {
  16. server = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
  17. server.Bind(new IPEndPoint(IPAddress.Parse("169.254.202.67"), ));//绑定端口号和IP
  18. Console.WriteLine("服务端已经开启");
  19. Thread t = new Thread(ReciveMsg);//开启接收消息线程
  20. t.Start();
  21. Thread t2 = new Thread(sendMsg);//开启发送消息线程
  22. t2.Start();
  23.  
  24. }
  25. /// <summary>
  26. /// 向特定ip的主机的端口发送数据报
  27. /// </summary>
  28. static void sendMsg()
  29. {
  30. EndPoint point = new IPEndPoint(IPAddress.Parse("169.254.202.67"), );
  31. while (true)
  32. {
  33. string msg = Console.ReadLine();
  34. server.SendTo(Encoding.UTF8.GetBytes(msg), point);
  35. }
  36.  
  37. }
  38. /// <summary>
  39. /// 接收发送给本机ip对应端口号的数据报
  40. /// </summary>
  41. static void ReciveMsg()
  42. {
  43. while (true)
  44. {
  45. EndPoint point = new IPEndPoint(IPAddress.Any, );//用来保存发送方的ip和端口号
  46. byte[] buffer = new byte[];
  47. int length = server.ReceiveFrom(buffer, ref point);//接收数据报
  48. string message = Encoding.UTF8.GetString(buffer,,length);
  49. Console.WriteLine(point.ToString()+ message);
  50.  
  51. }
  52. }
  53.  
  54. }
  55. }

客户端程序

  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Threading.Tasks;
  6. using System.Net;
  7. using System.Net.Sockets;
  8. using System.Threading;
  9. namespace UDP_client
  10. {
  11. class Program
  12. {
  13. static Socket client;
  14. static void Main(string[] args)
  15. {
  16. client = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
  17. client.Bind(new IPEndPoint(IPAddress.Parse("169.254.202.67"), ));
  18. Thread t = new Thread(sendMsg);
  19. t.Start();
  20. Thread t2 = new Thread(ReciveMsg);
  21. t2.Start();
  22. Console.WriteLine("客户端已经开启");
  23. }
  24. /// <summary>
  25. /// 向特定ip的主机的端口发送数据报
  26. /// </summary>
  27. static void sendMsg()
  28. {
  29. EndPoint point = new IPEndPoint(IPAddress.Parse("169.254.202.67"), );
  30. while(true){
  31. string msg = Console.ReadLine();
  32. client.SendTo(Encoding.UTF8.GetBytes(msg), point);
  33. }
  34.  
  35. }
  36.  
  37. /// <summary>
  38. /// 接收发送给本机ip对应端口号的数据报
  39. /// </summary>
  40. static void ReciveMsg()
  41. {
  42. while (true)
  43. {
  44. EndPoint point = new IPEndPoint(IPAddress.Any, );//用来保存发送方的ip和端口号
  45. byte[] buffer = new byte[];
  46. int length = client.ReceiveFrom(buffer, ref point);//接收数据报
  47. string message = Encoding.UTF8.GetString(buffer, , length);
  48. Console.WriteLine(point.ToString() + message);
  49. }
  50. }
  51.  
  52. }
  53. }

http://download.csdn.net/detail/u011484013/9488304

来源:http://blog.csdn.net/u011484013/article/details/51131267

C# 通过socket实现UDP 通信的更多相关文章

  1. [C++] socket - 2 [UDP通信C/S实例]

    服务端: #include<iostream> #include<winsock2.h> #include<stdio.h> #pragma comment(lib ...

  2. Linux 简单socket实现UDP通信

    服务器端 #include <stdio.h> #include <stdlib.h> #include <sys/types.h> #include <sy ...

  3. C#的Socket实现UDP协议通信

    今天稍花化了一点时间,利用C#的Socket验证了UDP的通信,为接下来特地利用UDP做个分布式的通信仿真系统打下基础.众所周知,UDP 就是用户数据报协议,在互联网参考模型的第四层——传输层.与TC ...

  4. Python的网络编程[0] -> socket[2] -> 利用 socket 建立 TCP/UDP 通信

    Socket 目录 socket 的 TCP/IP 通信基本建立过程 socket 的 UDP 通信基本建立过程 socket 的 UDP 广播式通信基本建立过程 socket 的多线程通信建立过程 ...

  5. Java网络编程UDP通信原理

    前言 继续今天我们的Java网络编程--TCP和UDP通信 一.TCP和UDP概述 传输层通常以TCP和UDP协议来控制端点与端点的通信   TCP UDP 协议名称 传输控制协议 用户数据包协议 是 ...

  6. C语言socket编程----实现UDP通信

    TCP/IP协议叫做传输控制/网际协议,又叫做网络通信协议.实际上,它包括上百个功能的协议. 套接字(socket):在网络中用来描述计算机中不同程序与其他计算程序的通信方式. 套接字分为三类; 流式 ...

  7. 27.Socket,TCP,UDP,HTTP基本通信原理

    Socket,TCP,UDP,HTTP基本通信原理(摘自百度): TCP.UDP,HTTP 底层通信都是通过 socket 套接字实现 网络上不同的计算机,也可以通信,那么就得使用网络套接字(sock ...

  8. VC++使用socket进行TCP、UDP通信实例总结

    1.        两台计算机通信需要协议,通信的两台计算机IP必须唯一 2.        同一个计算机可以进行多个应用程序与其他计算机通信,IP地址唯一,而端口号是区别同一计算机(同一IP)的唯一 ...

  9. socket实现udp与tcp通信-java

    1.简单介绍Socket Socket套接字 网络上具有唯一标识的IP地址和端口号组合在一起才能构成唯一能识别的标识符套接字. 通信的两端都有Socket. 网络通信其实就是Socket间的通信. 数 ...

随机推荐

  1. js中函数带不带var的本质区别是什么

    本质区别是:带var的是定义,属于statement:不带var的是赋值,属于expression.不带var时,解释器认为变量已经定义过了,会在函数中找相应的定义,如果找不到,就会认为变量是在外一层 ...

  2. Halcon学习笔记——机器视觉应用工程开发思路及相机标定

    机器视觉应用工程开发思路 机器视觉应用工程主要可划分为两大部分,硬件部分和软件部分. 1.硬件部分,硬件的选型至关重要,决定了后续工作是否可以正常开展,其中关键硬件部分包括:光源,相机以及镜头. 2. ...

  3. intent 活动之间穿梭

    1.从当前activity,跳转到当前应用程序的activity Intent intent = new Intent(MainActivity.this, Intent2Activity.class ...

  4. 自己用jquery+css+div写的一个弹窗

    弹窗支持两种模式,一种是普通信息提示框,调用方法:popup.msgPopup(msg); 另一种是可以加载页面的弹窗,调用方法:popup.pagePopup(url); 效果图: css代码 ;; ...

  5. javascript方法重载惹的祸

    先贴出代码,看看执行结果会是什么? function ShowMsg() { //函数1 this.sure = function () { alert("ok"); }; //函 ...

  6. 工作流-----WorkFlow

    我们都知道对于一个OA系统来说,最重要的也是不可或缺的一个重要环节那就是对于工作流的实现,为此,最近专门在学习如何使用WorkFlow,问前辈,前辈也说道K2工作流引擎挺不错,自己同时也翻阅了一些资料 ...

  7. PHP常用的一些数组操作总结

    1.array_values() :返回包含数组中所有键值的数组,不保留键名. 2.array_diff() 函数返回两个数组的差集数组.该数组包括了所有在被比较的数组中,但是不在任何其他参数数组中的 ...

  8. java中try-catch-finally中的return语句

    在try-catch-finally语句中使用return语句遇到了一些疑问 代码一: static int intc(){ int x =0; try{ x=1; return x; }finall ...

  9. CPU调度

    概念 1.控制,协调进程对CPU的竞争,按一定的调度算法从就绪队列中选择一个进程把CPU的使用权交给被选中的进程, 如果没有就绪进程,系统会安排一个系统空闲进程或idle进程 cpu调度要解决的三个问 ...

  10. print控制台输出带颜色文字方法

    在python开发的过程中,经常会遇到需要打印各种信息.海量的信息堆砌在控制台中,就会导致信息都混在一起,降低了重要信息的可读性.这时候,如果能给重要的信息加上字体颜色,那么就会更加方便用户阅读了. ...