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() + "建立通讯。\r\n请检查目标设备是否已经启动并保持网络畅通!");
} 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[];
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 > )
Console.WriteLine(Encoding.UTF8.GetString(bytes)); }
catch (Exception ex)
{
//lblError.Text = "出现错误,请联系管理员" + ex;
MessageBox.Show(ex.Message);
}
}

  

C# Socket的Send问题,阻塞线程的更多相关文章

  1. 一种构造WEB服务器端recv和send接口阻塞现象的方法

    send阻塞 socket recv send接口阻塞,会导致服务器端不在响应客户端任何请求,所以一般情况, 会将socket设置为非阻塞状态, 但是有些场景,例如ssl_accept就需要使用阻塞的 ...

  2. Delphi Socket 阻塞线程下为什么不触发OnRead和OnWrite事件

    //**********************************************************************************//说明: 阻塞线程下为什么不触 ...

  3. [转]Socket编程中,阻塞与非阻塞的区别

    阻塞:一般的I/O操作可以在新建的流中运用.在服务器回应前它等待客户端发送一个空白的行.当会话结束时,服务器关闭流和客户端socket.如果在队列中没有请示将会出现什么情况呢?那个方法将会等待一个的到 ...

  4. Socket编程中,阻塞与非阻塞的区别

    阻塞:一般的I/O操作可以在新建的流中运用.在服务器回应前它等待客户端发送一个空白的行.当会话结束时,服务器关闭流和客户端socket.如果在队列中没有请示将会出现什么情况呢?那个方法将会等待一个的到 ...

  5. delphi TServerSocket阻塞线程单元 实例

    TServerSocket阻塞线程单元,希望对你有所帮助.需要注意的是:1.如果你使用TServerSocket的stNonBlocking模式,重写TServerClientThread线程时要重载 ...

  6. socket函数send和recv函数

    转自:http://www.cppblog.com/aaxron/archive/2012/04/27/172891.html 在发送端,一次发送4092个字节,在接收端,一次接收4092个字节,但是 ...

  7. 服务器编程心得(四)—— 如何将socket设置为非阻塞模式

    1. windows平台上无论利用socket()函数还是WSASocket()函数创建的socket都是阻塞模式的: SOCKET WSAAPI socket( _In_ int af, _In_ ...

  8. Python进阶----异步同步,阻塞非阻塞,线程池(进程池)的异步+回调机制实行并发, 线程队列(Queue, LifoQueue,PriorityQueue), 事件Event,线程的三个状态(就绪,挂起,运行) ,***协程概念,yield模拟并发(有缺陷),Greenlet模块(手动切换),Gevent(协程并发)

    Python进阶----异步同步,阻塞非阻塞,线程池(进程池)的异步+回调机制实行并发, 线程队列(Queue, LifoQueue,PriorityQueue), 事件Event,线程的三个状态(就 ...

  9. tornado 异步调用系统命令和非阻塞线程池

    项目中异步调用 ping 和 nmap 实现对目标 ip 和所在网关的探测 Subprocess.STREAM 不用担心进程返回数据过大造成的死锁, Subprocess.PIPE 会有这个问题. i ...

  10. socket设置为非阻塞方式(windows和linux)

    Windows用以下方法将socket设置为非阻塞方式 : unsigned long ul=1; SOCKET s=socket(AF_INET,SOCK_STREAM,0); int ret=io ...

随机推荐

  1. codeforces 788A Functions again

    …… 原题: Something happened in Uzhlyandia again... There are riots on the streets... Famous Uzhlyandia ...

  2. 现在的企业用到的Java开发主流框架有哪些

    虽然Java一直被唱衰,但是直到现在Java软件开发也坚持霸主地位不动摇.毫无疑问,Java是目前最热门的编程语言之一.随着Java面向对象语言的流行以及多层架构应用的出现,使得应用程序的可复用性得到 ...

  3. Space Shooter 学习

    using UnityEngine; using System.Collections; /// <summary> /// 背景滚动 /// </summary> publi ...

  4. sqoop上传数据到hdfs,并用hive管理数据。

    sqoop导入mysql数据表到HDFS中sqoop import --connect jdbc:mysql://master:3306/test --username root --password ...

  5. Linux Tomcat自启动

    1. 修改/etc/rc.d/文件夹下的rc.lcoal 添加如下内容 export JAVA_HOME=/usr/java/jdk/jdk1.7.0_80 export JRE_HOME=$JAVA ...

  6. Qt中多线程问题

    1. 出现的问题 编写视频解码器程序时,把解码那部分单独置于一个线程中进行处理,后来实际应用到项目中发现内存泄漏很严重 问题就出现在多线程中,每次视频解码器程序关闭时首先必须释放其所涉及的堆空间, 由 ...

  7. RedHat6.5上安装Hadoop单机

    版本号:RedHat6.5   JDK1.8   Hadoop2.7.3 hadoop  说明:从版本2开始加入了Yarn这个资源管理器,Yarn并不需要单独安装.只要在机器上安装了JDK就可以直接安 ...

  8. mysql57免安装版配置

    1,下载mysql5.7压缩文件[具体到官网下载就行了] 2,解压并把mysql5.7放到c盘根目录下 3,进入mysql5.7主目录修改my-default.ini 重命名为:my.ini [如果没 ...

  9. windows下安装redis以及测试 --转载自http://www.cnblogs.com/lpyan/p/5608333.html

    redis加入到Windows 服务 以下方式,需要在redis-2.8.24下执行:http://download.csdn.net/download/feiliua/9425770 ,另外php的 ...

  10. mysql日常处理

    http://blog.csdn.net/zengxuewen2045/article/details/52349731 https://github.com/enmotplinux/On-Site- ...