C# Udp Socket例子

简介:

服务器端:

复制代码
using  System;
using  System.Collections.Generic;
using  System.Text;
using  System.Net;
using  System.Net.Sockets;

namespace  UDPServer
{
    
class Program
    
{
        
static void Main(string[] args)
        
{
            
int recv;
            
byte[] data = new byte[1024]; 

            
//构建TCP 服务器

            
//得到本机IP,设置TCP端口号         
            IPEndPoint ipep = new IPEndPoint(IPAddress.Any , 8001);
            Socket newsock 
= new Socket(AddressFamily.InterNetwork, SocketType.Dgram , ProtocolType.Udp);

            
//绑定网络地址
            newsock.Bind(ipep);

            Console.WriteLine(
"This is a Server, host name is {0}",Dns.GetHostName());

            
//等待客户机连接
            Console.WriteLine("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 received from {0}: ", Remote.ToString ());
            Console .WriteLine (Encoding .ASCII .GetString (data ,
0,recv ));

            
//客户机连接成功后,发送欢迎信息
            string welcome = "Welcome ! ";

            
//字符串与字节数组相互转换
            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.Linq;
using  System.Text;
using  System.Net;
using  System.Net.Sockets;

namespace  UDPClient
{
    
class Program
    
{
        
static void Main(string[] args)
        
{
            
byte[] data = new byte[1024];
            
string input ,stringData;

            
//构建TCP 服务器

            Console.WriteLine(
"This is a Client, host name is {0}", Dns.GetHostName());

            
//设置服务IP,设置TCP端口号
            IPEndPoint ipep = new IPEndPoint(IPAddress .Parse ("127.0.0.1") , 8001);

            
//定义网络类型,数据连接类型和网络协议UDP
            Socket server = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);

            
string welcome = "Hello! ";
            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];
            
//对于不存在的IP地址,加入此行代码后,可以在指定时间内解除阻塞模式限制
            
//server.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.ReceiveTimeout, 100);
            int recv = server.ReceiveFrom(data, ref Remote);
            Console.WriteLine(
"Message received 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(stringData);
            }

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


    }

}



本文转自94cool博客园博客,原文链接:http://www.cnblogs.com/94cool/archive/2011/09/03/2165807.html,如需转载请自行联系原作者
相关文章
|
10月前
|
存储 Python
Python网络编程基础(Socket编程) UDP 发送和接收数据
【4月更文挑战第10天】对于UDP客户端而言,发送数据是一个相对简单的过程。首先,你需要构建一个要发送的数据报,这通常是一个字节串(bytes)。然后,你可以调用socket对象的`sendto`方法,将数据报发送到指定的服务器地址和端口。
|
10月前
|
网络协议 网络性能优化 开发者
Python网络编程基础(Socket编程)UDP Socket编程
【4月更文挑战第8天】Python网络编程中,UDP与TCP协议各有特点。TCP提供可靠连接,确保数据顺序与完整性,适合文件传输等;UDP则无连接,速度快,常用于实时音视频,牺牲了数据可靠性。Python的socket库支持两者,开发者可根据需求选择。
|
10月前
|
存储 Python
Python网络编程基础(Socket编程)UDP客户端编程
【4月更文挑战第9天】在UDP通信中,客户端负责发送数据到服务器,并接收来自服务器的响应。与服务器不同,客户端通常不需要绑定到特定的地址和端口,因为它可以临时使用任何可用的端口来发送数据。下面,我们将详细讲解UDP客户端编程的基本步骤。
|
10月前
|
网络协议 Python
Python网络编程基础(Socket编程)创建UDP socket对象
【4月更文挑战第8天】在Python中创建UDP服务器涉及使用`socket`模块创建socket对象,如`udp_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)`,然后绑定到特定IP地址和端口,如`udp_socket.bind(('localhost', 12345))`。服务器通过`recvfrom`在无限循环中监听和接收数据报。这只是基础,实际应用还需处理接收、解析、响应及错误处理等。接下来可学习如何利用socket对象进行数据交互以构建完整服务器。
|
5月前
|
C# 开发者
C# 一分钟浅谈:Socket 编程基础
【10月更文挑战第7天】本文介绍了Socket编程的基础知识、基本操作及常见问题,通过C#代码示例详细展示了服务器端和客户端的Socket通信过程,包括创建、绑定、监听、连接、数据收发及关闭等步骤,帮助开发者掌握Socket编程的核心技术和注意事项。
165 3
C# 一分钟浅谈:Socket 编程基础
|
2月前
|
网络协议 C# 开发工具
C#中简单Socket编程
1. 先运行服务器代码。服务器将开始监听指定的IP和端口,等待客户端连接。 1. 然后运行客户端代码。客户端将连接到服务器并发送消息。 1. 服务器接收到消息后,将回应客户端,并在控制台上显示接收到的消息。 1. 客户端接收到服务器的回应消息,并在控制台上显示。
154 15
|
5月前
|
消息中间件 网络协议 C#
C#使用Socket实现分布式事件总线,不依赖第三方MQ
`CodeWF.EventBus.Socket` 是一个轻量级的、基于Socket的分布式事件总线系统,旨在简化分布式架构中的事件通信。它允许进程之间通过发布/订阅模式进行通信,无需依赖外部消息队列服务。
C#使用Socket实现分布式事件总线,不依赖第三方MQ
|
5月前
|
网络协议 网络性能优化 C#
C# 一分钟浅谈:UDP 与 TCP 协议区别
【10月更文挑战第8天】在网络编程中,传输层协议的选择对应用程序的性能和可靠性至关重要。本文介绍了 TCP 和 UDP 两种常用协议的基础概念、区别及应用场景,并通过 C# 代码示例详细说明了如何处理常见的问题和易错点。TCP 适用于需要可靠传输和顺序保证的场景,而 UDP 适用于对延迟敏感且可以容忍一定数据丢失的实时应用。
97 1
|
10月前
|
网络协议 Java
Java的Socket编程:TCP/IP与UDP深入探索
Java的Socket编程:TCP/IP与UDP深入探索
140 0
|
5月前
|
网络协议 Linux 网络性能优化
Linux基础-socket详解、TCP/UDP
综上所述,Linux下的Socket编程是网络通信的重要组成部分,通过灵活运用TCP和UDP协议,开发者能够构建出满足不同需求的网络应用程序。掌握这些基础知识,是进行更复杂网络编程任务的基石。
257 1