c# UDP通信 列子

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Net.Sockets;
using System.Net;
using System.Threading;

namespace WindowsFormsApplication1
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
            IPAddress[] ips = Dns.GetHostAddresses("");
            this.textBox1.Text = ips[0].ToString();
            this.textBox4.Text = ips[0].ToString();

        }

        private void textBox1_TextChanged(object sender, EventArgs e)
        {
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            Control.CheckForIllegalCrossThreadCalls = false;
        }
        Socket mySocket;
        IPEndPoint Remoteendpoint;
        EndPoint RemotePoint;
        private void button1_Click(object sender, EventArgs e)
        {
            mySocket = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
           //服务器
            IPAddress ipadd = IPAddress.Parse(this.textBox1.Text);
            IPEndPoint ipend = new IPEndPoint(ipadd, int.Parse(this.textBox2.Text));
            mySocket.Bind(ipend);

            //客户机
            IPAddress ipRemote = IPAddress.Parse(this.textBox4.Text);
            Remoteendpoint = new IPEndPoint(ipadd, int.Parse(this.textBox3.Text));
            RemotePoint=(EndPoint)Remoteendpoint;

            //使用线程处理数据接收

            Thread thread = new Thread(new ThreadStart(Receive));
            thread.IsBackground = true;
            thread.Start();

        }
        public  delegate void MyInvoke(string strRecv) ;
        void Receive()
        {
            //接受数据处理线程
            string msg;
            byte[] data = new byte[1024];
            MyInvoke myI = new MyInvoke(ShowMsg);
            while (true)
            {
                if (mySocket==null||mySocket.Available<1)
                {
                    Thread.Sleep(200);
                    continue;
                }
                //跨线程调用控件
                //接受udp数据报,引用参数RemotePoint获得源地址
                int rlen = mySocket.ReceiveFrom(data, ref RemotePoint);
                msg = Encoding.Default.GetString(data, 0, rlen);
                this.textBox5.BeginInvoke(myI, new object[] { RemotePoint.ToString() + ":" + msg });

            }
        }
        void ShowMsg(string msg)
        {
            //接受数据显示
            this.textBox5.AppendText(msg+"\r\n");
        }

        private void button2_Click(object sender, EventArgs e)
        {
            string msg;
            msg=this.textBox6.Text;
            byte [] data= Encoding.Default.GetBytes(msg);
            mySocket.SendTo(data,data.Length,SocketFlags.None,RemotePoint);
        }
    }
}

  

时间: 2024-08-03 09:14:21

c# UDP通信 列子的相关文章

UDP通信

UDP通信的实体都是对等的. Server可以绑定端口,client实际上也可以绑定端口,如果不绑定端口,系统给socket随机关联一个端口. Client也可以通过Connect建立和server的连接. 例如: client绑定1900,server绑定1500 udp 0 0 0.0.0.0:1500 0.0.0.0:* udp 0 0 127.0.0.1:1900 127.0.0.1:1500 ESTABLISHED

wince 6.0下UDP通信需要注意MAC地址

最近在wince6.0下进行网络通信,在ARM下使用UDP通信协议.当然了,首先按照自己的使用配置wince中的IP,修改注册表即可. 我是wince的菜鸟,但是绝不是使用UDP通信的新手,在windows下跑过多次的UDP发送端和接收端,在wince下却怎么都不能像在windows下使用那么顺利,出现了不可理解的现象: (1)wince和wince相互通信,发送成功了,可是接收端却没有收到数据包: (2)wince和windows相互通信,发送和接收都正常: (3)wince和windows互

HP-SOCKET TCP/UDP通信框架库解析

项目概述: HP-SOCKET是一套通用TCP/UDP通信框架,包括服务器.客户端.Agent组件:其目标是提供高性能.通用性.简易性.可扩展.可定制: 鉴于此,其仅实现基本的通用框架通信.数据收发功能,供上层应用直接简单使用的接口实现:而对于数据包完整性和协议解析等未处理, 也就意味着需要应用层自己处理一些数据包构造或解析等操作: 事实上目前只能支持windows平台: 1. 对于TCP通信模式下:服务器端和Agent均采用的是异步IO模型中的完成端口模型,客户端采用的是就绪IO通告模型中的W

android udp通信(应用层与底层硬件的通信)

背景:最近项目用到一块工控板,板子硬件与上位机通过udp方式进行通信,但厂家只提供了c#的demo,并将相应的驱动命令封装为dll动态库.另一项目小组希望在android平台下也能驱动这块工控板,我之前写过一些底层的驱动,但都收通过串口来传输的,通过网络进行数据通信的还是头一次接触.简单地看了下硬件的通信协议,还好,不算很复杂,每条命令只有20个字节.于是开始了解在android下如何实现Udp通信,现积累如下. what? 字面意思:UDP的全称是 User Datagram Protocol

JAVA网络编程--UDP通信

首先网络传输数据需了解例如以下三点 1.找到对方IP 2.数据要发送到对方指定的应用程序上,为了标识这些应用程序,所以给这些网络应用程序用数字进行了标识.为了方便称呼这个数字,叫做port,逻辑port 3.  定义通信规则.这个通信规则称为协议. 国际组织定义了通用协议TCP/IP. 127.0.0.1本机回环地址 不易记忆,可用主机名 主机名:localhost 0-65535port范围 0-1024系统使用或保留port .当中mysql的port号为 3306 一.UDP UDP相对于

qt在windows下的udp通信(最简单)

qt编程:windows下的udp通信 本文博客链接:http://blog.csdn.net/jdh99,作者:jdh,转载请注明. 环境: 主机:win7 开发环境:qt 功能: 用udp进行收发通信 界面: 源代码: LssHost.pro: [cpp] view plain copy #------------------------------------------------- # # Project created by QtCreator 2013-09-22T09:36:44

Android 之简单UDP通信

一 Android UDP通信编程步骤 服务器端: 1.建立Socket 2.监听端口  3.接收数据  4.实现数据发送 客户端:直接实现数据发送即可 二 代码,实现一个简单的UdpHelper类 1 package com.br.delphi.centercontrol; 2 3 import android.os.Handler; 4 import android.os.Message; 5 import android.util.Log; 6 7 import java.io.IOExc

高性能 TCP &amp; UDP 通信框架 HP-Socket v3.5.1 正式发布

HP-Socket 是一套通用的高性能 TCP/UDP 通信框架,包含服务端组件.客户端组件和 Agent 组件,广泛适用于各种不同应用场景的 TCP/UDP 通信系统,提供 C/C++.C#.Delphi.E(易语言).Java.Python 等编程语言接口.HP-Socket 对通信层实现完全封装,应用程序不必关注通信层的任何细节:HP-Socket 提供基于事件通知模型的 API 接口,能非常简单高效地整合到新旧应用程序中. 为了让使用者能方便快速地学习和使用 HP-Socket,迅速掌握

[python] 网络编程之套接字Socket、TCP和UDP通信实例

很早以前研究过C#和C++的网络通信,参考我的文章: C#网络编程之Tcp实现客户端和服务器聊天 C#网络编程之套接字编程基础知识 C#网络编程之使用Socket类Send.Receive方法的同步通讯 Python网络编程也类似.同时最近找工作笔试面试考察Socket套接字.TCP\UDP区别比较多,所以这篇文章主要精简了<Python核心编程(第二版)>第16章内容.内容包括:服务器和客户端架构.套接字Socket.TCP\UDP通信实例和常见笔试考题. 最后希望文章对你有所帮助,如果有不