C# Udp Socket例子

简介:

服务器端:

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

namespace  UDPServer
ExpandedBlockStart.gif
{
    
class Program
ExpandedSubBlockStart.gif    
{
        
static void Main(string[] args)
ExpandedSubBlockStart.gif        
{
            
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 )
ExpandedSubBlockStart.gif            
{
                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
ExpandedBlockStart.gif
{
    
class Program
ExpandedSubBlockStart.gif    
{
        
static void Main(string[] args)
ExpandedSubBlockStart.gif        
{
            
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)
ExpandedSubBlockStart.gif            
{
                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,如需转载请自行联系原作者
相关文章
|
1月前
|
数据处理 C# C++
如何使用C#和C++结构体实现Socket通信
如何使用C#和C++结构体实现Socket通信
|
8月前
|
网络协议 Linux C语言
linux下CC++网络编程基本:socket实现tcp和udp的例子
linux下CC++网络编程基本:socket实现tcp和udp的例子
162 0
|
6月前
|
安全 网络协议 Java
Thread类的用法 && 线程安全 && 多线程代码案例 && 文件操作和 IO && 网络原理初识 &&UDP socket
Thread类的用法 && 线程安全 && 多线程代码案例 && 文件操作和 IO && 网络原理初识 &&UDP socket
38 0
|
15天前
|
Python
Python网络编程基础(Socket编程)UDP服务器编程
【4月更文挑战第8天】Python UDP服务器编程使用socket库创建UDP套接字,绑定到特定地址(如localhost:8000),通过`recvfrom`接收客户端数据报,显示数据长度、地址和内容。无连接的UDP协议使得服务器无法主动发送数据,通常需应用层实现请求-响应机制。当完成时,用`close`关闭套接字。
|
1月前
|
网络协议 Linux
TCP 和 UDP 的 Socket 调用
【2月更文挑战第19天】
TCP 和 UDP 的 Socket 调用
|
4月前
|
存储 网络协议 安全
网络编程『socket套接字 ‖ 简易UDP网络程序』
网络编程『socket套接字 ‖ 简易UDP网络程序』
77 0
|
4月前
|
JSON C# 图形学
【Unity 3D】利用C#、Unity和Socket实现简单的在线聊天室工具(附源码 简单易懂)
【Unity 3D】利用C#、Unity和Socket实现简单的在线聊天室工具(附源码 简单易懂)
48 0
|
4月前
|
网络协议 Unix Linux
【Unity 3D】C#中Socket及TCP三次握手与四次挥手详解(超详细 图文解释)
【Unity 3D】C#中Socket及TCP三次握手与四次挥手详解(超详细 图文解释)
41 0
|
4月前
|
网络协议
百度搜索:蓝易云【基于TCP/UDP的Socket编程】
通过使用上述示例,您可以基于TCP或UDP协议进行Socket编程,实现网络通信功能。根据您的需求,可以进一步扩展和定制这些示例代码。
36 1
|
3月前
|
网络协议
百度搜索:蓝易云【基于TCP/UDP的Socket编程。】
以上是基于TCP/UDP的Socket编程的基本步骤和函数调用。通过理解和掌握这些概念和操作,可以实现网络应用程序的数据传输和通信功能。
47 1