zoukankan      html  css  js  c++  java
  • C# Socket的Send问题,阻塞线程

    Socket sc = comm.connectSocket(ip, port, ReceiveMsg_fromPc);
    comm.sendSocketMsg16(sc,cmd);
    sc.Close();
    public static Socket connectSocket(string ip, int port, ReceiveSocketMsg receiveMsg)
        {
            Socket socket = null;
            try
            {
                IPAddress serverIP = IPAddress.Parse(ip);
                IPEndPoint serverFullAddr = new IPEndPoint(serverIP, port);//设置IP,端口  
                socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
    
                //指定本地主机地址和端口号  
                socket.Connect(serverFullAddr);
    
                Thread receiveThread = new Thread(receiveSocketMessage);
                List<Object> list = new List<object>();
                list.Add(socket);
                list.Add(receiveMsg);
                receiveThread.Start(list);
            }
            catch (Exception e)
            {
                MessageBox.Show("未能与" + ip + ":" + port.ToString() + "建立通讯。
    请检查目标设备是否已经启动并保持网络畅通!");
            }
    
            return socket;
        }
    
    /// <summary>
        /// 发送16进制消息
        /// </summary>
        /// <param name="socket"></param>
        /// <param name="msg"></param>
        public static void sendSocketMsg16(Socket socket, string msg)
        {
            byte[] byteSend = strToToHexByte(msg);
            byte[] bytes = new byte[256];
            try
            {
                //发送数据  
                //socket.Send(byteSend);
    
                int i = socket.Send(byteSend, byteSend.Length, SocketFlags.None);
    
                // Get reply from the server.
                int byteCount = socket.Receive(bytes, socket.Available,SocketFlags.None);
    
                if (byteCount > 0)
                    Console.WriteLine(Encoding.UTF8.GetString(bytes));
    
            }
            catch (Exception ex)
            {
                //lblError.Text = "出现错误,请联系管理员" + ex;
                MessageBox.Show(ex.Message);
            }
        }

      

  • 相关阅读:
    H5C3综合案例
    CSS3 3D转换
    CSS3 动画
    CSS3 2D转换
    html+css入门基础案例之页面设计
    0tcpdump使用与ping
    redis计划(yet)
    为什么hashmap以2的倍数作为桶的长度,同时以2作为扩容倍数
    maven SNAPSHOT
    maven dependengcy:tree 查看maven依赖树(母项目指定pluginManagement)
  • 原文地址:https://www.cnblogs.com/timy/p/10269260.html
Copyright © 2011-2022 走看看