简单的无连接的udp服务器和客户端

本文提供了一个简单的UDP服务器和客户端的C#实现案例,通过代码展示了如何建立连接、发送与接收数据,并进行基本的消息往返处理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 服务器

 

using System;
using System.Collections.Generic;
using System.Text;
using System.Net;
using System.Net.Sockets;

namespace SimpleUdpSrvr
{
    
class Program
    
{
        
static void Main(string[] args)
        
{
            
int recv;
            
byte[] data = new byte[1024];
            IPEndPoint ipep 
= new IPEndPoint(IPAddress.Any, 9050);
            Socket newsock 
= new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
            newsock.Bind(ipep);
            Console.WriteLine(
"Waiting for a client...");
            IPEndPoint sender 
= new IPEndPoint(IPAddress.Any, 0);
            EndPoint Remote 
= (EndPoint)sender;
            recv 
= newsock.ReceiveFrom(data, ref Remote);
            Console.WriteLine(
"Message received from {0}:", Remote.ToString());
            Console.WriteLine(Encoding.ASCII.GetString(data, 
0, recv));
            
string welcome = "Welcome to my server test";
            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);
            }

        }

    }

}

 

 

客户端

using System;
using System.Collections.Generic;
using System.Text;
using System.Net;
using System.Net.Sockets;

namespace SimpleUdpClient
{
    
class Program
    
{
        
static void Main(string[] args)
        
{
            
byte[] data = new byte[1024];
            
string input, stringdata;
            IPEndPoint ipep 
= new IPEndPoint(IPAddress.Parse("127.0.0.1"), 9050);
            Socket server 
= new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
            
string welcome = "Hello ,are you there?";
            data 
= Encoding.ASCII.GetBytes(welcome);
            server.SendTo(data, data.Length, SocketFlags.None, ipep);
            IPEndPoint sender 
= new IPEndPoint(IPAddress.Any, 0);
            EndPoint remote 
= (EndPoint)sender;
            data 
= new byte[1024];
            
int recv = server.ReceiveFrom(data, ref remote);
            Console.WriteLine(
"Message receive from {0}:", remote.ToString());
            Console.WriteLine(Encoding.ASCII.GetString(data, 
0, recv));
            
while (true)
            
{
                input 
= Console.ReadLine();
                
if (input == "exit")
                    
break;
                server.SendTo(Encoding.ASCII.GetBytes(input), remote);
                data 
= new byte[1024];
                recv 
= server.ReceiveFrom(data,ref remote);
                stringdata 
= Encoding.ASCII.GetString(data, 0, recv);
            }

            Console.WriteLine(
"Stopping client");
            server.Close();
        }

    }

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值