linux网络编程的问题
能不能让服务端先去干点别的事,如果客户端发送数据到socket,服务端再立刻响应?
------解决方案--------------------使用多线程异步处理了。
------解决方案--------------------一般服务器accept后就一直处于睡眠状态,等待客户端请求。
如果楼主想让服务器在这期间做些别的事,应该考虑使用多线程!起码在结构上很清晰!
我就知道这么多了,做等大牛解答!
------解决方案--------------------I/O复用。
------解决方案--------------------楼主搜索 epoll + 多线程
------解决方案--------------------并发服务器吧,,select,多线程,多进程都可以的吧。。
------解决方案--------------------TCP EPOLL 或者 select 等模型都可以实现。但是你还是要开个线程监听事件
------解决方案--------------------socket你没有设置为非阻塞,
static int make_socket_non_blocking (int sfd)
{
int flags, s;
flags = fcntl (sfd, F_GETFL, 0);
if (flags == -1)
{
perror ("fcntl");
return -1;
}
flags
------解决方案--------------------= O_NONBLOCK;
s = fcntl (sfd, F_SETFL, flags);
if (s == -1)
{
perror ("fcntl");
return -1;
}
return 0;
}
------解决方案--------------------套接字设置为非阻塞后, 你要判断 recv send函数的返回值 <0 并不代表网络出错, 还要判断错误代码才能确定是否真的出错。 祝你好运。。
------解决方案--------------------可以的,先调用fcntl函数设置套接字为非阻塞的情况,然后可以通过IO多路复用,例如select、poll进行接受和发送客户端信息