日期:2014-05-20  浏览次数:21114 次

C#UDP发送和接收消息
需求是这样的

Server端 负责采集一个设备通过IP传递过来的信心 如(1,2,3,4,5)

业务要求。接收到1 则将1发送给Client端  ip(110.110.11.1) ,接收到2则将2发送给Client端 ip(110.110.11.2) 一次类推。。。

ip地址实际上是同数据库里面读取的 他们对应的 信号类别 举例 IP:110.110.11.1  信号列别 1,端口也有



因为对socket还不是很熟,时间紧急求救。 用 C#winform写这个玩意

如何实现
------解决方案--------------------
你怎么把技术帖发到非技术区呢?
本来想帮你的
但我的帐号在非技术禁言了
帮不了你啊


------解决方案--------------------
如果是安全协议又不想丢包 就用 tcp,你这是发心跳包吗?如果不在乎丢包就用UDP,还有网上很多例子,google 一下
 
此消息通过 【CSDN论坛 Winform正式版】 回复!有关此工具
------解决方案--------------------
发错区域了。。
不在乎丢包 所以用 UDP

代码写都差不多了但是都是copy 的还是希望有大牛推荐些更好的思想和高质量代码
------解决方案--------------------
关注中。。。。。。。
------解决方案--------------------
发送消息,此消息向所有检测到的ip进行发送,,如何实现
------解决方案--------------------
问题当天解决了分享下我是怎么做的


Server端:
 
 
#region 服务器发送数据到客户端方法
        Socket sendSocket = null;
        private void SendsMsg(string msg, string ip, int port)
        {
            sendSocket = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
            IPEndPoint iPEndPoint = new IPEndPoint(IPAddress.Parse(ip), port);
            EndPoint endPoint = (EndPoint)iPEndPoint;
            sendSocket.SendTo(System.Text.Encoding.Default.GetBytes(msg), iPEndPoint);
        }
        #endregion



Client端:
  Socket connectionSocket = null;
        private void LoadingMsg(string ip, string port)
        {
            connectionSocket = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
            IPEndPoint iPEndPoint = new IPEndPoint(IPAddress.Parse(ip), Convert.ToInt32(port));
            connectionSocket.Bind(iPEndPoint);
            Thread acceptThread = new Thread(Accept);
            acceptThread.IsBackground = true;
            acceptThread.Start();
        }
        void Accept()
        {
            while (true)
            {
                byte[] by = new byte[1024];