zoukankan      html  css  js  c++  java
  • WPF socket通讯 UDP接收消息

    客户端:

     1 private Socket socket;
     2 private IPEndPoint ipEndPoint;
     3 private void sendMessageHandler()
     4 {
     5     //服务端ip,端口为192.168.1.1,8085
     6     ipEndPoint = new IPEndPoint(IPAddress.Parse("192.168.1.1"), 8085);
     7     socket=new Socket(AddressFamily.InterNetwork,SocketType.Stream,ProtocolType.Tcp);
     8     try
     9     {
    10          socket.BeginConnect(ipEndPoint, new AsyncCallback(connectHandler), socket);
    11     }
    12          catch (Exception ex)
    13          {
    14               Console.WriteLine(ex.Message);
    15          }
    16 }
    17 
    18  private void connectHandler(IAsyncResult async)
    19         {
    20             Socket client = async.AsyncState as Socket;
    21             try
    22             {
    23                 if (client.Connected)
    24                 {
    25                     byte[] msg = Encoding.UTF8.GetBytes("hello");
    26                     try
    27                     {
    28                         System.Threading.Thread.Sleep(1000);
    29                         socket.Send(msg, 0, msg.Length, SocketFlags.None);
    30                     }
    31                     catch(Exception ex)
    32                     {
    33                         MessageBox.Show(ex.ToString());
    34                     }
    35                 }
    36                 else
    37                 {
    38                     Console.WriteLine("没连接上");
    39                 }
    40             }
    41             catch (Exception ex)
    42             {
    43                 Console.WriteLine(ex.Message);
    44             }
    45         }

     服务器端:

     1 /// <summary>
     2 /// 数据类
     3 /// </summary>
     4 public class Client
     5 {
     6       public Socket Socket { get; set; }
     7       public byte[] _buffer;
     8             /// <summary>
     9             /// 为该 Socket 开辟的缓冲区
    10         /// </summary>
    11             public byte[] Buffer
    12             {
    13                 get
    14                 {
    15                     if (_buffer == null)
    16                         _buffer = new byte[10240 * 10];
    17                     return _buffer;
    18                 }
    19             }
    20         }
    21 
    22 private Socket Server;
    23 private void Begin()
    24 {
    25      Server = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
    26       Server.Bind(new IPEndPoint(IPAddress.Any,8085));
    27       Server.Listen(100);
    28       Server.BeginAccept(new AsyncCallback(ClientConnectComplete), null);
    29 }
    30 private int _receiveCount = 0;//用于统计本次接收到的字节数
    31 private void ClientConnectComplete(IAsyncResult async)
    32 {
    33     Client client = new Client();
    34     try
    35     {
    36          client.Socket = Server.EndAccept(async);
    37     }
    38     catch (Exception)
    39     {
    40         Server.BeginAccept(new AsyncCallback(ClientConnectComplete), null);
    41         return;
    42     }
    43     Console.WriteLine(client.Socket.RemoteEndPoint + " 连接成功!");
    44 
    45     try
    46     {
    47           _receiveCount = client.Socket.Receive(client.Buffer, 0, client.Buffer.Length, SocketFlags.None);
    48     }
    49     catch(Exception ex)
    50     {
    51            MessageBox.Show(ex.ToString());
    52     }
    53     //接收的消息
    54     string message = Encoding.UTF8.GetString(client.Buffer, 0, _receiveCount);
    55     //继续接受下一个连接
    56    Server.BeginAccept(new AsyncCallback(ClientConnectComplete), null);
    57 }

    服务器端接收UDP字节:

     1 private UdpClient udpClient;
     2 private void ReceiveData()
     3 {
     4     udpClient = new UdpClient(int port);
     5     IPEndPoint udpRemote=null;
     6     while(true)
     7     {
     8         try
     9         {
    10             byte[] udpBytes=udpClient.Receive(ref udpRemote);
    11             Console.Write(udpBytes.Length);
    12         }catch(){}
    13     }
    14 }
  • 相关阅读:
    Java参数传递方式
    C++成员函数的 重载、隐藏、覆盖分析(转)
    回调函数 (一)
    Java之String 专题二
    从10亿个浮点数中找出最大的1万个
    【onclick事件】【改变 HTML 内容innerHTML】【图片替换】【改变标签的css】【判断输入是否是数字】
    【页面加载】【九九乘法表】【document.write的功能_】【<script>直接显示数组】【声明新变量】
    Windows10 环境下安装 ElasticSearch
    数据包和数据报有何区别?
    NIO 通道和缓冲区
  • 原文地址:https://www.cnblogs.com/dongyl/p/3990684.html
Copyright © 2011-2022 走看看