Thread與Socket阻塞
public void run()
{
try
{
String readMess="";
client=null;
in=null;
out=null;
client =new Socket(ip,port);
//client =new Socket("10.242.10.75",4660);
System.out.println(line+" CONNECTION OK!");
out = new DataOutputStream(client.getOutputStream());
in = new DataInputStream(client.getInputStream());
flag=true;
while(true)
{
/*
if(in.available()==0)
{
//break;
continue;
}
*/
System.out.print(line);
System.out.println(client.isConnected());
readMess=in.readLine().trim();
//System.out.println(readMess);
if(readMess.equals("")||readMess==null)
{
System.out.println("while end!");
break;
}
else
{
if(!client.isConnected())
{
System.out.println(line+" is no connection!");
}
id=trans.getID(readMess);
strData=trans.getData(readMess);
//System.out.println(id+" data= "+strData);
insert_RCV_Data(strData,id);
int count=0;
while(true)
{
int getflag=get_send_flag(id);
if(getflag==0)
{
sleep(150);
count++;
if(count==20)
{
try
{
Statement stmt=con.createStatement();
String strsqlupdate="update SYS_DATA_CHANNEL set flag=4 where id="+id+" and flag=0";
stmt.executeUpdate(strsqlupdate);
stmt.close();
} catch(Exception ex)
{
System.out.println("errorUpdate : "+ex.getMessage());
}
break;
}
}
else if(getflag==1||getflag==2)
{
trans.sendData(out,strData,id,false);
this.data.insertElementAt("ID:"+id+" Data:"+strData,0);
get_send_Data();
break;
}
}
}
}
}
catch(Exception e)
{
System.out.println(ip+" Thread run error :"+e.getMessage());
}
}
相关推荐
基于多线程的非阻塞 socket 编程
# 基于多线程的非阻塞Socket编程教程 ## 简介 基于多线程的非阻塞Socket编程是一种高效处理网络通信的技术,结合了多线程编程和非阻塞I/O。它用于构建高性能的网络服务器和客户端,可以同时处理多个连接而不使线程阻塞在I/O操作上。本文详细描述这种编程模式的概念、实现原理和应用场景。 ### 一、基本概念 1. **Socket编程**:Socket是网络通信的基本单元,通过Socket API,应用程序可以在网络上进行数据传输。典型的Socket编程包括创建Socket、绑定地址、监听连接(服务器端)、连接服务器(客户端)、发送和接收数据等操作。 2. **非阻塞I/O**:非阻塞I/O允许应用程序在执行I/O操作时立即返回,而不是等待操作完成。这意味着,应用程序可以在等待I/O完成期间执行其他任务,提高资源利用率和响应速度。 3. **多线程编程**:多线程编程允许一个应用程序同时执行多个任务。通过多线程,服务器可以并发处理多个客户端连接,每个线程独立处理一个连接的I/O操作。 ### 二、实现原理 1. **Socket设置为非阻塞模式**:通过设置Soc
python多线程非阻塞socket
socket服务端:采用多进程通信的方法(两个进程,主进程接收socket数据,子进程负责读取缓冲的数据,增大并发性能,接收采用多线程的形式) socket客户端:测试发送数据。
C语言socket编程(讲解+实例)
代码转载自:https://pan.quark.cn/s/9dd506e495b5 tcpclient 1、介绍 这是基于 RT-Thread 基于多线程的非阻塞 socket 编程示例,本文主要是介绍如何使用 API。 详情可了解:多线程的非阻塞 socket 编程 1、目录结构 2、许可证 tcpclient 遵循 LGPLv2.1 许可,详见 文件。 3、依赖 依赖 EasyLogger 软件包 依赖 dfs 文件系统 RT-Thread 3.0+,对 bsp 无依赖 2、使用 tcpclient 测试 可参考例程代码,该代码位于: tcpclient_example.c 3、 API 介绍 1、启动 TCP 客户端任务 输入服务器 IP 地址 & (自定义的)端口号;服务器(网络调试助手)监听这个端口号 2、关闭 TCP 客户端任务 通信结束,用户使用此 API 关闭资源 3、注册接收数据的回调函数 回调函数需要由用户来写,可参考例程代码 4、发送数据 4、注意事项 通信完毕,需要用户自己调用 API 释放资源 5、联系方式 & 感谢 感谢:armink 制作了 EasyLogger 软件包 维护:never
C++封装类CWSocket(多线程 非阻塞)
C++封装类CWSocket(多线程 非阻塞)vc mfc 一般直接添加就可用,还有超时处理,强大。
Python实现socket非阻塞通讯功能示例
主要介绍了Python实现socket非阻塞通讯功能,结合实例形式分析了Python使用socket模块进行非阻塞通讯的原理、多线程及客户端、服务器端相关实现技巧,需要的朋友可以参考下


Java SE
