bs结构socket(udp)通信
以前我所做的基于socket通信都是采用cs结构,现公司有一个项目需要在bs中反控设备,于是研究了一番,现将成果公布,方便以后查阅。
服务端:
- #region udp
- int recv;
- byte[] data = new byte[1024];
- //得到本机IP,设置TCP端口号
- IPEndPoint ip = new IPEndPoint(IPAddress.Any, 2000);
- Socket newsock = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
- //绑定网络地址
- newsock.Bind(ip);
- //等待客户机连接
- Console.WriteLine("This is a Server,Waiting for a client);
- //得到客户机IP
- IPEndPoint sender = new IPEndPoint(IPAddress.Any, 0);
- EndPoint Remote = (EndPoint)(sender);
- recv = newsock.ReceiveFrom(data, ref Remote);
- Console.WriteLine("Message{0}: ", Remote.ToString());
- Console.WriteLine(Encoding.ASCII.GetString(data, 0, recv));
- //客户机连接成功后,发送信息
- string welcome = "hello,sean! ";
- //字符串与字节数组相互转换
- data = Encoding.ASCII.GetBytes(welcome);
- //发送信息
- newsock.SendTo(data, data.Length, SocketFlags.None, Remote);
- while (true)
- {
- data = new byte[1024];
- //发送接收信息
- recv = newsock.ReceiveFrom(data, ref Remote);
- Console.WriteLine(Encoding.ASCII.GetString(data, 0, recv));
- newsock.SendTo(data, recv, SocketFlags.None, Remote);
- }
- #endregion
bs客户端(实际是发布iis所在的服务器):
- public partial class _Default : System.Web.UI.Page
- {
- string host = "";
- int port = 0;
- protected void Page_Load(object sender, EventArgs e)
- {
- }
- protected void Button2_Click(object sender, EventArgs e)
- {
- //int port = 5154;
- //host = "172.16.2.245";
- port = Int32.Parse(this.txt_port.Value.Trim());
- host = this.txt_ip.Value.Trim();
- //创建终结点EndPoint
- IPAddress ip = IPAddress.Parse(host);
- IPEndPoint ipe = new IPEndPoint(ip, port); //把ip和端口转化为IPEndPoint的实例
- UdpClient sender1 = new UdpClient();
- //向服务器发送信息
- string sendStr = this.txt_info.Value;
- byte[] bs = Encoding.ASCII.GetBytes(sendStr); //把字符串编码为字节
- lock (this)
- {
- sender1.Send(bs, bs.Length, ipe);
- this.txt_info.Value = "";
- Thread.Sleep(200);
- Receive(sender1);
- }
- }
- public void Receive(UdpClient sender1)
- {
- IPEndPoint RemoteIpEndPoint = new IPEndPoint(IPAddress.Any,2000);
- try
- {
- Byte[] receiveBytes = sender1.Receive(ref RemoteIpEndPoint);
- string returnData = Encoding.ASCII.GetString(receiveBytes);
- this.txt_info.Value=("message received " +returnData.ToString());
- }
- catch (Exception e)
- {
- }
- }
- }
需要考虑并发操作,我在前台有相关操作限制,特殊情况特殊考虑
bs结构socket(udp)通信的更多相关文章
- 2 socket UDP通信
1 socket套接字 class 对象 In [1]: import socket In [2]: help(socket.socket) class socket(_socket.socket) ...
- 【RL-TCPnet网络教程】第17章 RL-TCPnet之UDP通信
第17章 RL-TCPnet之UDP通信 本章节为大家讲解RL-TCPnet的UDP通信实现,学习本章节前,务必要优先学习第16章UDP用户数据报协议基础知识.有了这些基础知识之后,再搞本章 ...
- VC++使用socket进行TCP、UDP通信实例总结
1. 两台计算机通信需要协议,通信的两台计算机IP必须唯一 2. 同一个计算机可以进行多个应用程序与其他计算机通信,IP地址唯一,而端口号是区别同一计算机(同一IP)的唯一 ...
- 重新想象 Windows 8 Store Apps (62) - 通信: Socket TCP, Socket UDP
[源码下载] 重新想象 Windows 8 Store Apps (62) - 通信: Socket TCP, Socket UDP 作者:webabcd 介绍重新想象 Windows 8 Store ...
- 与众不同 windows phone (31) - Communication(通信)之基于 Socket UDP 开发一个多人聊天室
原文:与众不同 windows phone (31) - Communication(通信)之基于 Socket UDP 开发一个多人聊天室 [索引页][源码下载] 与众不同 windows phon ...
- C语言socket编程----实现UDP通信
TCP/IP协议叫做传输控制/网际协议,又叫做网络通信协议.实际上,它包括上百个功能的协议. 套接字(socket):在网络中用来描述计算机中不同程序与其他计算程序的通信方式. 套接字分为三类; 流式 ...
- Python的网络编程[0] -> socket[2] -> 利用 socket 建立 TCP/UDP 通信
Socket 目录 socket 的 TCP/IP 通信基本建立过程 socket 的 UDP 通信基本建立过程 socket 的 UDP 广播式通信基本建立过程 socket 的多线程通信建立过程 ...
- Python基于socket模块实现UDP通信功能示例
Python基于socket模块实现UDP通信功能示例 本文实例讲述了Python基于socket模块实现UDP通信功能.分享给大家供大家参考,具体如下: 一 代码 1.接收端 import ...
- UNIX下socket通信 - UDP通信
一.UNIX下socket通信: socket套接字是一种可以进行网络通信的内核对象,它是一个唯一的标示符,一般称它为socket描述符. 注意:UDP通信需要客户端先发送消息,服务端先进行等待客户端 ...
随机推荐
- Python学习笔记(2)
变量 变量名就像我们现实社会的名字,把一个值赋值给一个名字时,它会存储在存储中,称之为变量(Variable),在大多数语言中,都把这种行为称为“给变量赋值”或“把值存储在变量中”. 而Python与 ...
- php : 类常量
使用总结: 1.不能使用 define 来定义 2.通过 "类名::常量名" 来获取 /** * PHP类常量 * * 类常量属于类自身,不属于对象实例,不能通过对象实例访问 * ...
- jquery总结05-常用事件04-委托事件
委托事件on 多个事件绑定同一个函数 $("#elem").on("mouseover mouseout",function(){ });通过空格分离,传递不同 ...
- 《BI那点儿事》Cube的存储
关系 OLAP (ROLAP)ROLAP的基本数据和聚合数据均存放在关系数据库中:ROLAP 存储模式使得分区的聚合存储在关系数据库的表(在分区数据源中指定)中.但是,可为分区数据使用 ROLAP 存 ...
- linux 下安装安装rz/sz命令
一.软件安装 root 账号登陆后,依次执行以下命令: cd /tmp wget http://www.ohse.de/uwe/releases/lrzsz-0.12.20.tar.gz http:/ ...
- Shell 语法之函数
函数是被赋予名称的脚本代码块,可以在代码的任意位置重用.每当需要在脚本中使用这样的代码块时,只需引用该代码块被赋予的函数名称. 创建函数 格式 function name { commands } n ...
- Html_Img元素 设置图片与其他元素横排高度一致
<img id="numAdd" src="~/Images/jia.jpg" style="width:30px;height:30px;ve ...
- C#_批量插入数据到Sqlserver中的四种方式
先创建一个用来测试的数据库和表,为了让插入数据更快,表中主键采用的是GUID,表中没有创建任何索引.GUID必然是比自增长要快的,因为你生成一个GUID算法所花的时间肯定比你从数据表中重新查询上一条记 ...
- UNIX 逐字符输入
//终端驱动处于普通胡一次一字符模式 system("stty raw"); //终端驱动处于普通胡一次一行模式 system("stty cooked");
- ABAP之声母韵母
我们一开始上学的时候,老师最先教的是什么? 拼音,声母,韵母,声调等等. 那么ABAP里什么是这些东西呢? 基础的数据类型,已经数据字典里的东西:域,数据元素,结构,视图,表,搜索帮助,锁... 数据 ...