先上代码。该代码是在问度娘的过程中搜到的,自己实验运行了下,可以使用(vs2010  net fram4.0)。服务端代码:

  1. using System;using System.Collections.Generic;
  2. using System.Text;
  3. using System.Net;
  4. using System.Net.Sockets;
  5. namespace UDP
  6. {
  7. class Program
  8. {
  9. static void Main(string[] args)
  10. {
  11. int recv;
  12. byte[] data = new byte[];
  13.  
  14. //得到本机IP,设置TCP端口号  
  15. IPEndPoint ip = new IPEndPoint(IPAddress.Any, );
  16. Socket newsock = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
  17.  
  18. //绑定网络地址        
  19. newsock.Bind(ip);
  20. Console.WriteLine("This is a Server, host name is {0}", Dns.GetHostName());
  21.  
  22. //等待客户机连接       
  23. Console.WriteLine("Waiting for a client");
  24.  
  25. //得到客户机IP          
  26. IPEndPoint sender = new IPEndPoint(IPAddress.Any, );
  27. EndPoint Remote = (EndPoint)(sender);
  28. recv = newsock.ReceiveFrom(data, ref Remote);
  29. Console.WriteLine("Message received from {0}: ", Remote.ToString());
  30. Console.WriteLine(Encoding.ASCII.GetString(data, , recv));
  31.  
  32. //客户机连接成功后,发送信息      
  33. string welcome = "你好!见到你很高兴! ";
  34.  
  35. //字符串与字节数组相互转换         
  36. data = Encoding.ASCII.GetBytes(welcome);
  37.  
  38. //发送信息         
  39. newsock.SendTo(data, data.Length, SocketFlags.None, Remote);
  40. while (true)
  41. {
  42. data = new byte[];
  43. //发送接受信息             
  44. recv = newsock.ReceiveFrom(data, ref Remote);
  45. Console.WriteLine(Encoding.ASCII.GetString(data, , recv));
  46. newsock.SendTo(data, recv, SocketFlags.None, Remote);
  47. }
  48. }
  49. }
  50. }

客户端代码:

  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Net;
  6. using System.Net.Sockets;
  7. namespace UDPClient
  8. {
  9. class Program
  10. {
  11. static void Main(string[] args)
  12. {
  13. byte[] data = new byte[];
  14. string input, stringData;
  15. //构建TCP 服务器        
  16. Console.WriteLine("This is a Client, host name is {0}", Dns.GetHostName());
  17. //设置服务IP,设置TCP端口号           
  18. IPEndPoint ip = new IPEndPoint(IPAddress.Parse("127.0.0.1"), );
  19. //定义网络类型,数据连接类型和网络协议UDP       
  20. Socket server = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
  21. string welcome = "你好! ";
  22. data = Encoding.ASCII.GetBytes(welcome);
  23. server.SendTo(data, data.Length, SocketFlags.None, ip);
  24. IPEndPoint sender = new IPEndPoint(IPAddress.Any, );
  25. EndPoint Remote = (EndPoint)sender;
  26. data = new byte[];
  27. //对于不存在的IP地址,加入此行代码后,可以在指定时间内解除阻塞模式限制  
  28. int recv = server.ReceiveFrom(data, ref Remote);
  29. Console.WriteLine("Message received from {0}: ", Remote.ToString());
  30. Console.WriteLine(Encoding.ASCII.GetString(data, , recv));
  31. while (true)
  32. {
  33. input = Console.ReadLine();
  34. if (input == "exit")
  35. break;
  36. server.SendTo(Encoding.ASCII.GetBytes(input), Remote);
  37. data = new byte[];
  38. recv = server.ReceiveFrom(data, ref Remote);
  39. stringData = Encoding.ASCII.GetString(data, , recv);
  40. Console.WriteLine(stringData);
  41. }
  42. Console.WriteLine("Stopping Client.");
  43. server.Close();
  44. }
  45. }
  46. }

运行后,服务端与客户端能正确通信。
这些代码虽然在实际工作处理中不是特别完整,但是可以提供一个思路。

(三)一个工作任务引起的乱战——udp通信的更多相关文章

  1. (二)一个工作任务引起的乱战——C++程序编译为dll,让C#调用

    C++程序编译为C#可调用的dll的过程: 1.新建一个Win32 Console Application 项目,项目名为:DLLDemo,下一步选择Application type为DLL; 2.在 ...

  2. (一)一个工作任务引起的乱战——c#中结构体与byte[]间相互转换

    一个工作任务涉及到c#与c++系统间的udp通信,处理了蛮长时间没有完成任务,但是期间接触到不少小知识点.本人是初接触c#,c++语言没有接触过.可能写的东西都很小儿科,暂且记录下来当工作日记把. 先 ...

  3. [C语言]一个很实用的服务端和客户端进行UDP通信的实例

    前段时间发了个TCP通信的例子,现在再来一个UDP通信的例子.这些可以作为样本程序,用到开发中.“裸写”socket老是记不住步骤,经常被鄙视…… 下面的例子很简单,写一个UDP的server用于收包 ...

  4. LVS三种工作方式八种算法

    一.集群简介 什么是集群 计算机集群简称集群是一种计算机系统,它通过一组松散集成的计算机软件和/或硬件连接起来高度紧密地协作完成计算工作.在某种意义上,他们可以被看作是一台计算机.集群系统中的单个计算 ...

  5. VMWare提供了三种工作模式上网

    VMWare提供了三种工作模式,它们是bridged(桥接模式).NAT(网络地址转换模式)和host-only(主机模式).要想在网络管理和维护中合理应用它们,你就应该先了解一下这三种工作模式. 1 ...

  6. VMWare三种工作模式 :bridge、host-only、nat

    VMWare提供了三种工作模式,它们是bridged(桥接模式).NAT(网络地址转换模式)和host-only(主机模式).要想在网络管理和维护中合理应用它们,你就应该先了解一下这三种工作模式.这里 ...

  7. VMWare虚拟机网络的三种工作模式

    VMWare提供了三种工作模式: 1.bridged(桥接模式) 在这种模式下,VMWare虚拟出来的操作系统就像是局域网中的一台独立的主机,它可以访问网内任何一台机器.在桥接模式下,需要手工为虚拟系 ...

  8. HTTPD三种工作模型

    HTTPD三种工作模型 MPM是apache的多道处理模块,用于定义apache对客户端请求的处理方式.在linux中apache常用的三种MPM模型分别是prefork.worker和event. ...

  9. 1.Git起步-Git的三种状态以及三种工作区域、CVCS与DVCS的区别、Git基本工作流程

    1.Git基础 版本控制系统是一种用于记录一个或多个文件内容变化,以便将来查阅恢复特定版本修订情况的系统. Git是一种分布式版本控制系统(Distributed Version Control Sy ...

随机推荐

  1. PHP XML DOM

    PHP XML DOM 内建的 DOM 解析器使在 PHP 中处理 XML 文档成为可能. DOM 是什么? W3C DOM 提供了针对 HTML 和 XML 文档的标准对象集,以及用于访问和操作这些 ...

  2. Linux Shell脚本编程--sed命令详解

    简介 sed 是一种在线编辑器,它一次处理一行内容.处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”(pattern space),接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的 ...

  3. html5之web worker

    Web Worker   在本文中 与 Web Worker 进行双向通信 WindowTimers 在 IE10 Platform Preview 4 中对 Web Worker 的更新 API 参 ...

  4. Ubuntu 12.04(32位)下PHP环境的搭建(LAMP)

    Ubuntu 12.04 32位 下默认安装为5.3.10  不是以下图文中的5.4 1.首先打开命令行,切换到root身份,获得最新的软件包 su root sudo apt-get install ...

  5. DEDE提高生成HTmL的速度

    1.找到include/inc/inc_fun_SpGetArcList.php打开之.   2.查找以下代码:   for($i=0;$i<$ridnum;$i++){     if($tps ...

  6. Java内部类和外部类的通信探索

    1.内部类访问外部类的成员和方法 在内部类中,可以无障碍地访问外部类的所有成员和方法. 在下面的实验代码中,可以看到,内部类sl可以访问外部类的私有成员:sz 和 cur. 同时可以访问私有方法:pr ...

  7. C程序设计语言练习题1-20

    练习1-20 编写程序detab,将输入中的制表符替换成适当数目的空格,使空格充满到下一个制表符终止位的地方.假设制表符终止位的位置是固定的,比如每隔n列就会出现一个制表符终止位.n应该是变量还是符号 ...

  8. Unity3D 经验记录

    1.using UnityEngine.SceneManagement; 当在01场景调用02场景时,再载入回01场景时,代码保存的变量不会初始化,预制物体脚本内的变量会初始化. 2.当子物体太多时, ...

  9. javaWeb防止恶意登陆或防盗链的使用

    使用场景:明明引用了一个正确的图片地址,但显示出来的却是一个红叉或写有“此图片仅限于***网站用户交流沟通使用”之类的“假图片”.用嗅探软件找到了多媒体资源的真实地址用下载软件仍然不能下载.下载一些资 ...

  10. ubuntu设置系统时间与网络时间同步

    ubuntu设置系统时间与网络时间同步   Linux的时间分为System Clock(系统时间)和Real Time Clock (硬件时间,简称RTC).   系统时间:指当前Linux Ker ...