以前我所做的基于socket通信都是采用cs结构,现公司有一个项目需要在bs中反控设备,于是研究了一番,现将成果公布,方便以后查阅。

服务端:

  1. #region udp
  2.  
  3. int recv;
  4. byte[] data = new byte[1024];
  5.  
  6. //得到本机IP,设置TCP端口号
  7. IPEndPoint ip = new IPEndPoint(IPAddress.Any, 2000);
  8. Socket newsock = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
  9.  
  10. //绑定网络地址
  11. newsock.Bind(ip);
  12. //等待客户机连接
  13. Console.WriteLine("This is a Server,Waiting for a client);
  14.  
  15. //得到客户机IP
  16. IPEndPoint sender = new IPEndPoint(IPAddress.Any, 0);
  17. EndPoint Remote = (EndPoint)(sender);
  18. recv = newsock.ReceiveFrom(data, ref Remote);
  19. Console.WriteLine("Message{0}: ", Remote.ToString());
  20. Console.WriteLine(Encoding.ASCII.GetString(data, 0, recv));
  21.  
  22. //客户机连接成功后,发送信息
  23. string welcome = "hello,sean! ";
  24.  
  25. //字符串与字节数组相互转换
  26. data = Encoding.ASCII.GetBytes(welcome);
  27.  
  28. //发送信息
  29. newsock.SendTo(data, data.Length, SocketFlags.None, Remote);
  30. while (true)
  31. {
  32. data = new byte[1024];
  33. //发送接收信息
  34. recv = newsock.ReceiveFrom(data, ref Remote);
  35. Console.WriteLine(Encoding.ASCII.GetString(data, 0, recv));
  36. newsock.SendTo(data, recv, SocketFlags.None, Remote);
  37. }
  38.  
  39. #endregion

bs客户端(实际是发布iis所在的服务器):

  1. public partial class _Default : System.Web.UI.Page
  2. {
  3. string host = "";
  4. int port = 0;
  5. protected void Page_Load(object sender, EventArgs e)
  6. {
  7.  
  8. }
  9. protected void Button2_Click(object sender, EventArgs e)
  10. {
  11.  
  12. //int port = 5154;
  13. //host = "172.16.2.245";
  14. port = Int32.Parse(this.txt_port.Value.Trim());
  15. host = this.txt_ip.Value.Trim();
  16.  
  17. //创建终结点EndPoint
  18. IPAddress ip = IPAddress.Parse(host);
  19.  
  20. IPEndPoint ipe = new IPEndPoint(ip, port); //把ip和端口转化为IPEndPoint的实例
  21.  
  22. UdpClient sender1 = new UdpClient();
  23. //向服务器发送信息
  24. string sendStr = this.txt_info.Value;
  25. byte[] bs = Encoding.ASCII.GetBytes(sendStr); //把字符串编码为字节
  26. lock (this)
  27. {
  28. sender1.Send(bs, bs.Length, ipe);
  29. this.txt_info.Value = "";
  30. Thread.Sleep(200);
  31. Receive(sender1);
  32. }
  33.  
  34. }
  35.  
  36. public void Receive(UdpClient sender1)
  37. {
  38.  
  39. IPEndPoint RemoteIpEndPoint = new IPEndPoint(IPAddress.Any,2000);
  40. try
  41. {
  42. Byte[] receiveBytes = sender1.Receive(ref RemoteIpEndPoint);
  43.  
  44. string returnData = Encoding.ASCII.GetString(receiveBytes);
  45.  
  46. this.txt_info.Value=("message received " +returnData.ToString());
  47. }
  48. catch (Exception e)
  49. {
  50.  
  51. }
  52. }
  53.  
  54. }

需要考虑并发操作,我在前台有相关操作限制,特殊情况特殊考虑

bs结构socket(udp)通信的更多相关文章

  1. 2 socket UDP通信

    1 socket套接字  class 对象 In [1]: import socket In [2]: help(socket.socket) class socket(_socket.socket) ...

  2. 【RL-TCPnet网络教程】第17章 RL-TCPnet之UDP通信

    第17章      RL-TCPnet之UDP通信 本章节为大家讲解RL-TCPnet的UDP通信实现,学习本章节前,务必要优先学习第16章UDP用户数据报协议基础知识.有了这些基础知识之后,再搞本章 ...

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

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

  4. 重新想象 Windows 8 Store Apps (62) - 通信: Socket TCP, Socket UDP

    [源码下载] 重新想象 Windows 8 Store Apps (62) - 通信: Socket TCP, Socket UDP 作者:webabcd 介绍重新想象 Windows 8 Store ...

  5. 与众不同 windows phone (31) - Communication(通信)之基于 Socket UDP 开发一个多人聊天室

    原文:与众不同 windows phone (31) - Communication(通信)之基于 Socket UDP 开发一个多人聊天室 [索引页][源码下载] 与众不同 windows phon ...

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

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

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

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

  8. Python基于socket模块实现UDP通信功能示例

    Python基于socket模块实现UDP通信功能示例 本文实例讲述了Python基于socket模块实现UDP通信功能.分享给大家供大家参考,具体如下: 一 代码 1.接收端     import ...

  9. UNIX下socket通信 - UDP通信

    一.UNIX下socket通信: socket套接字是一种可以进行网络通信的内核对象,它是一个唯一的标示符,一般称它为socket描述符. 注意:UDP通信需要客户端先发送消息,服务端先进行等待客户端 ...

随机推荐

  1. Python学习笔记(2)

    变量 变量名就像我们现实社会的名字,把一个值赋值给一个名字时,它会存储在存储中,称之为变量(Variable),在大多数语言中,都把这种行为称为“给变量赋值”或“把值存储在变量中”. 而Python与 ...

  2. php : 类常量

    使用总结: 1.不能使用 define 来定义 2.通过 "类名::常量名" 来获取 /** * PHP类常量 * * 类常量属于类自身,不属于对象实例,不能通过对象实例访问 * ...

  3. jquery总结05-常用事件04-委托事件

    委托事件on 多个事件绑定同一个函数 $("#elem").on("mouseover mouseout",function(){ });通过空格分离,传递不同 ...

  4. 《BI那点儿事》Cube的存储

    关系 OLAP (ROLAP)ROLAP的基本数据和聚合数据均存放在关系数据库中:ROLAP 存储模式使得分区的聚合存储在关系数据库的表(在分区数据源中指定)中.但是,可为分区数据使用 ROLAP 存 ...

  5. linux 下安装安装rz/sz命令

    一.软件安装 root 账号登陆后,依次执行以下命令: cd /tmp wget http://www.ohse.de/uwe/releases/lrzsz-0.12.20.tar.gz http:/ ...

  6. Shell 语法之函数

    函数是被赋予名称的脚本代码块,可以在代码的任意位置重用.每当需要在脚本中使用这样的代码块时,只需引用该代码块被赋予的函数名称. 创建函数 格式 function name { commands } n ...

  7. Html_Img元素 设置图片与其他元素横排高度一致

    <img id="numAdd" src="~/Images/jia.jpg" style="width:30px;height:30px;ve ...

  8. C#_批量插入数据到Sqlserver中的四种方式

    先创建一个用来测试的数据库和表,为了让插入数据更快,表中主键采用的是GUID,表中没有创建任何索引.GUID必然是比自增长要快的,因为你生成一个GUID算法所花的时间肯定比你从数据表中重新查询上一条记 ...

  9. UNIX 逐字符输入

    //终端驱动处于普通胡一次一字符模式 system("stty raw"); //终端驱动处于普通胡一次一行模式 system("stty cooked");

  10. ABAP之声母韵母

    我们一开始上学的时候,老师最先教的是什么? 拼音,声母,韵母,声调等等. 那么ABAP里什么是这些东西呢? 基础的数据类型,已经数据字典里的东西:域,数据元素,结构,视图,表,搜索帮助,锁... 数据 ...