udpsocket 通信C#例子

服务端代码:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Net.Sockets;
using System.Text;
using System.Threading.Tasks;

namespace UdpsocketServer
{
    class Program
    {
        static void Main(string[] args)
        {
            int recv;
            byte[] revData = new byte[1024];
            byte[] sendData = new byte[1024];
            IPEndPoint ip = new IPEndPoint(IPAddress.Any, 6666);
            Socket newsock = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
            newsock.Bind(ip);
            Console.WriteLine("我是服务端,主机名:{0}", Dns.GetHostName());
            Console.WriteLine("等待客户端连接.....");
            IPEndPoint sender = new IPEndPoint(IPAddress.Any, 0);
            EndPoint Remote = (EndPoint)(sender);
            recv = newsock.ReceiveFrom(revData, ref Remote);
            Console.WriteLine("我是服务端,客户端{0}连接成功", Remote.ToString());
            Console.WriteLine(Encoding.Unicode.GetString(revData, 0, recv));
            string welcome = "你好,我是服务器";
            sendData = Encoding.Unicode.GetBytes(welcome);
            newsock.SendTo(sendData, sendData.Length, SocketFlags.None, Remote);
            while (true)
            {
                sendData = new byte[1024];
                recv = newsock.ReceiveFrom(sendData, ref Remote);
                string recvData = string.Format("客户端{0}发送:{1}", Remote.ToString(), Encoding.Unicode.GetString(sendData, 0, recv));
                Console.WriteLine(recvData);
                // string recvData =string.Format("服务器接收到数据{0}", Encoding.ASCII.GetString(data, 0, recv));
                // byte.Parse(recvData);
                string recvDateSucceed = string.Format("服务器已收到.");
                sendData = Encoding.Unicode.GetBytes(recvDateSucceed);
                newsock.SendTo(sendData, sendData.Length, SocketFlags.None, Remote);
            }
        }
    }
}

客户端代码:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Net.Sockets;
using System.Text;
using System.Threading.Tasks;

namespace UdpsocketDemo
{
    class Program
    {
        static void Main(string[] args)
        {
            byte[] data = new byte[1024];
            string input, stringData;
            //构建TCP 服务器
            Console.WriteLine("这是客户端, 主机名是 {0}", Dns.GetHostName());
            //设置服务IP,设置TCP端口号
            IPEndPoint ip = new IPEndPoint(IPAddress.Parse("127.0.0.1"), 6666);
            //定义网络类型,数据连接类型和网络协议UDP
            Socket server = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
            string welcome = "你好服务器,我是客户端! ";
            data = Encoding.Unicode.GetBytes(welcome);
            server.SendTo(data, data.Length, SocketFlags.None, ip);
            IPEndPoint sender = new IPEndPoint(IPAddress.Any, 0);
            EndPoint Remote = (EndPoint)sender;

            byte[] sendData = new byte[1024];
            //对于不存在的IP地址,加入此行代码后,可以在指定时间内解除阻塞模式限制
            int recv = server.ReceiveFrom(sendData, ref Remote);
            Console.WriteLine("我是客户端,从服务器端: {0}接收到消息 ", Remote.ToString());
            Console.WriteLine(Encoding.Unicode.GetString(sendData, 0, recv));
            while (true)
            {
                input = Console.ReadLine();
                //退出
                if (input == "exit")
                    break;
                server.SendTo(Encoding.Unicode.GetBytes(input), Remote);
                byte[] recvData = new byte[1024];
                recv = server.ReceiveFrom(recvData, ref Remote);
                stringData = string.Format("服务器{0}发送:{1}", Remote.ToString(), Encoding.Unicode.GetString(recvData, 0, recv));
                Console.WriteLine(stringData);
            }
            Console.WriteLine("服务停止.");
            server.Close();

        }

    }
}

说明: 客户端直接发送内容,服务器端直接接收

时间: 2024-10-06 07:16:14

udpsocket 通信C#例子的相关文章

C#中使用UdpClient类进行简单通信的例子

UdpClient 类提供了一些简单的方法,用于在阻止同步模式下发送和接收无连接 UDP 数据报. 因为 UDP 是无连接传输协议,所以不需要在发送和接收数据前建立远程主机连接.但您可以选择使用下面两种方法之一来建立默认远程主机: 使用远程主机名和端口号作为参数创建 UdpClient 类的实例. 创建 UdpClient 类的实例,然后调用 Connect 方法. 可以使用在 UdpClient 中提供的任何一种发送方法将数据发送到远程设备. 使用 Receive 方法可以从远程主机接收数据.

用boost共享内存实现进程通信的例子

发送端 #include "DBProc1.h" #include <string> #include <thread> #include <boost/thread/thread.hpp> using namespace boost::interprocess; PLUG_COMPONENT_AUTO_REG(DBProc1)//DO NOT EDIT THIS struct MyStruct { int a; int b; std::string

多线程通信小例子——New生产者消费者

多线程通信小例子--New生产者消费者

java即时通信小例子

学习java一段时间了,今天写来一个即时通信的小例子练手在其过程中也学到了一些知识拿出来和大家分享,请路过的各位大神多多赐教... 好了下面讲一下基本的思路: 首先,编写服务器端的程序,简单点说吧就是在服务上开启一个线程循环等待客户端的连接,为每一个连接到服务器的Socket 创建一个实例存放在集合中,然后使用InputSteam读取从客户端发过来的数据然后转发给除自己之外的所有的客户端 然后是客户端,首先开启一个线程连接都服务器端,循环监听服务器发送回来的数据 这里要说一下为了明确是谁发出的消

一个 Java 的 Socket 服务器和客户端通信的例子

http://blog.csdn.net/defonds/article/details/7971259 多个客户端对应一个服务端的通信的一个小例子.  服务端和客户端代码: public class Server { /** * 监听的端口 */ public static final int PORT = 12345; public static void main(String[] args) { System.out.println("服务器启动>>>>>&

ajax 异步 通信 小例子 servlet与 jsp异步

get  请求参数通过 url那里写进去,然后send(null) html文件和 servlet进行通信 通过ajax 进行通信 1 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 2 <html> 3 <head> 4 <meta http-equiv="

ajax 异步 通信 小例子 servlet与 jsp异步 post方法

post请求 url后面加参数 接收不到的,必须 放到send("use"=user)形式 还要加上 xhr.setRequestHeader("Content-Type","application/x-www-form-urlencoded"); servlet 1 package cn.itcast.controller; 2 3 import java.io.IOException; 4 import javax.servlet.Servl

UDP----socket通信

基于UDP(不是面向连接)的socket编程,分为客户端和服务器端. 客户端的流程如下: (1)创建套接字(socket) (2)和服务器端进行通信(sendto) (3)关闭套接字 sendto函数:指向一指定目的地发送数据,sendto()适用于发送未建立连接的UDP数据包 ssize_t sendto(int sockfd, const void *buf, size_t len, int flags, const struct sockaddr *dest_addr, socklen_t

Qt 的udpSocket通信

udpSocket = new QUdpSocket(this); QByteArray datagram = "blog.const.net.cn"; udpSocket->writeDatagram(datagram.data(), datagram.size(), QHostAddress::Broadcast, 45454); udpSocket->bind(QHostAddress("192.168.1.104"), 45454); UDP客户