zoukankan      html  css  js  c++  java
  • 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 ();            
            }


        }

    }
  • 相关阅读:
    Springboot+mybatis-plus+mysql+clickhouse集成多数据源
    对集合里每个元素是一个对象,按照对象某一个属性值给这个集合排序
    vue的a-tree-select选择父节点回显的是子节点
    Es简单条件查询
    使用Ant Desigen在vue里面实现分页以及表头的模糊查询
    搭建第一个vue项目
    Address localhost:1099 is already in use
    spring的控制反转DI---基于注解实现
    mybatis下的ResultMap配置一对一以及一对多
    mybatis入门
  • 原文地址:https://www.cnblogs.com/94cool/p/2165807.html
Copyright © 2011-2022 走看看