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


        }

    }

  • 相关阅读:
    CC3000 SmartConfig
    谈谈几个月以来开发android蓝牙4.0 BLE低功耗应用的感受
    CC3000 SPI接口编程介绍
    cc3000+LM3S9B96
    CC3000 主机驱动API介绍
    Wi-FiR CC3000 模块
    修改远程桌面连接端口及修改端口号后如何连接!
    电脑网线/水晶头的连接方法(A类,B类)
    快速切换IP的批处理!
    IE打开报错,提示该内存不能为read的解决办法!
  • 原文地址:https://www.cnblogs.com/easypass/p/2126267.html
Copyright © 2011-2022 走看看