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);
            }
        }

      

  • 相关阅读:
    前端的一些工具
    ubuntu安装intelij idea 和pycharm
    广义欧几里得算法,求解形如ax+by=c的整数解
    Kali安装jdk8
    ARP 项添加失败: 拒绝访问
    Python扩展包,解决”unable to find vcvarsall.bat“
    python实现mschap2
    Ubuntu 安装 Corsaro v2.0.0 全过程
    使用GridFS上传下载图片以及其他文件
    Eclipse设置工作空间编码
  • 原文地址:https://www.cnblogs.com/timy/p/10269260.html
Copyright © 2011-2022 走看看