#include stdio.h> #include unistd.h> #include stdlib.h> #include string.h> #include netinet/in.h> #include sys/socket.h> #include sys/types.h> #include errno.h> #include sys/select.h> #define BUF_LEN 1024 #define SERV_PORT 5358 #define FD_SIZE 513 ssize_t writen(int fd, const void *vptr, size_t n) { size_t nleft; ssize_t nwriten; const char *ptr; ptr = vptr; nleft = n; wh...
by famdestiny - Linux文档专区 - 2009-07-17 13:46:49 阅读(1089) 回复(0)
我要编写一个tcp中转器,实现一下功能: 1.实现一个tcp服务器,该服务器有若干个后端 2.该服务器作为前端接收客户端数据,并把客户端数据转发给后端,同时把后端发回的数据转发给客户 端,不需要对内容进行解析。 3.该服务器对后端的服务器进行监控,并剔除死去的后端,加入活过来的后端。 4.前端服务器可以采用轮询或基于源ip端口hash两种调度方法来来选择服务的后端服务器 采用select I/O模型,经过测试,发现服务器在遇到...
绝对原创哈,这是我的一个main函数,其他实现,不好意思贴上来 为了减少篇幅,我把所有错误判断删掉了,大家见谅! 不过这个main函数体现了select模型的思想, int main() { SOCKET listen_socket; struct sockaddr_in myaddr; //create listen socket listen_socket=socket(AF_INET,SOCK_STREAM,0); myaddr.sin_addr.s_addr=INADDR_ANY; myaddr.sin_family=AF_INET; myaddr.sin_port=htons(80); //bind listen socket bind(l...
//服务器端 #include #include #include #include #include #include #include #include #include #include #include #include #include #define MAXLINE 1000 typedef struct client{ int fd; char *name; struct sockaddr_in addr; char *data; }CLIENT; void str_echo(CLIENT *client,char *buf,int len); void savadata(char *buf,int len,char *data); int main(int argc,char **argv) { int listenfd,connfd; struct soc...
本帖最后由 hokuhouhi 于 2011-09-23 10:43 编辑 [code]while(1){ n = select(MaxFd+1,&rs,NULL,NULL,NULL); if( n < 0 && errno != EINTR){ continue; }[/code]-------------------------------------------------------------[code]while(1){ n = select(max_fd+1, (fd_set*)Save_set, (fd_set *)NULL, (fd_set *)NULL, &tv); if ( n < 0 ){ if ( errno == EINTR ) continue ; } } [/code]--------...
找了一圈,觉得发在这个版块最合适。 我按照unix网络编程中的步骤以select实现了一个回射服务器,可是当只有一个连接的时候,正常工作,当第二个以上的连接连入时,客户端输入时,会阻塞在select函数,这时在第一个客户输入时,第二个客户的输入才会从服务器回射,不知道为什么,请高手指导。 下面是服务器和客户端的代码,运行时,注意修改IP. serv.c #define SERV_PORT 9877 #include "sys/select.h" #include "sys/socket.h...
在socket编程时使用select模型,如何判断对方主机已经关闭?
[code]
// sockselect.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
#include
班级:09计应用二班 姓名:郑明莉 学号:0906042007
班级:09计算机应用技术1班&nb...