当前位置: 技术问答>linux和unix
socket问题,请有linux开发经验者帮忙
来源: 互联网 发布时间:2015-09-05
本文导语: socket client端: 首先,client循环向server发业务请求处理信息,每个业务请求处理过程含许多分过程,通过recv服务器的返回信息决定具体处理过程。 while(..) //循环发信息 { .... send() ... while(recv())...
socket client端:
首先,client循环向server发业务请求处理信息,每个业务请求处理过程含许多分过程,通过recv服务器的返回信息决定具体处理过程。
while(..) //循环发信息
{
....
send()
...
while(recv()) //业务处理过程
{
...
switch()
{
...
send()
...
}
}
....
}
可是我总是感觉有点不对劲,我想知道有经验的开发人员怎么处理这种情况
我记得以前在unix下一般是用阻塞来实现类似的问题,可是我又不想用多线程来实现,只想用单线程
请大家帮忙,谢谢了。
还有问问异常处理机制怎么来做?
首先,client循环向server发业务请求处理信息,每个业务请求处理过程含许多分过程,通过recv服务器的返回信息决定具体处理过程。
while(..) //循环发信息
{
....
send()
...
while(recv()) //业务处理过程
{
...
switch()
{
...
send()
...
}
}
....
}
可是我总是感觉有点不对劲,我想知道有经验的开发人员怎么处理这种情况
我记得以前在unix下一般是用阻塞来实现类似的问题,可是我又不想用多线程来实现,只想用单线程
请大家帮忙,谢谢了。
还有问问异常处理机制怎么来做?
|
while(..) //循环发信息
{
...
send()
recved=false;
...
while(!recved)
{
select()
if(有数据)
{...
recv()
recved=true;
switch()//业务处理过程
{
...
ReadyData()//准备发送数据
...
}
}
....
}
{
...
send()
recved=false;
...
while(!recved)
{
select()
if(有数据)
{...
recv()
recved=true;
switch()//业务处理过程
{
...
ReadyData()//准备发送数据
...
}
}
....
}
|
while(1) {
ret = send_request();
...// 错误处理
}
int send_request()
{
process_service1();
process_service2();
...
process_servicen();
}
int process_service1()
{
send();
recv();
...
}
...
ret = send_request();
...// 错误处理
}
int send_request()
{
process_service1();
process_service2();
...
process_servicen();
}
int process_service1()
{
send();
recv();
...
}
...
|
不想用多线程,用select方式。配合进程池最好不过了。