当前位置: 技术问答>linux和unix
一个一对一的聊天程序,客户端老连不上,大家帮我看看哪错了
来源: 互联网 发布时间:2016-03-24
本文导语: 服务端: #include #include #include #include #include #include #include #include #include #define MAXDATASIZE 512 #define PORT 6666 #define STDIN 0 int main(void) { int sockfd,client_fd; int sin_size; struct sockaddr_in my_addr...
服务端:
#include
#include
#include
#include
#include
#include
#include
#include
#include
#define MAXDATASIZE 512
#define PORT 6666
#define STDIN 0
int main(void)
{
int sockfd,client_fd;
int sin_size;
struct sockaddr_in my_addr,remote_addr;
char buf[256], send_str[256];
int ret,val,recvbytes;
fd_set rfd_set,wfd_set,efd_set;
struct timeval timeout;
if((sockfd=socket(AF_INET,SOCK_STREAM,0))==-1)
{
perror("socket failn");
exit(1);
}
bzero(&my_addr,sizeof(struct sockaddr_in));
my_addr.sin_family=AF_INET;
my_addr.sin_addr.s_addr=htonl(INADDR_ANY);
my_addr.sin_port=htons(PORT);
/*val=setsockopt(sockfd,SOL_SOCKET,SO_REUSEADDR,(struct sockaddr *)&my_addr,sizeof(my_addr));
if(val==-1)
{
perror("setsockopt failn");
exit(1);
}*/
if(bind(sockfd,(struct sockaddr *)&my_addr,sizeof(struct sockaddr))==-1)
{
perror("bind failn");
exit(1);
}
if(listen(sockfd,5)==-1)
{
perror("listen failn");
exit(1);
}
sin_size=sizeof(remote_addr);
printf("waiting to connect .... n");
if((client_fd=accept(sockfd,(struct sockaddr *)&remote_addr,&sin_size))==-1)
{
perror("accept failn");
exit(1);
}
fcntl(client_fd,F_SETFD,O_NONBLOCK);
while(1)
{
FD_ZERO(&wfd_set);
FD_ZERO(&efd_set);
FD_ZERO(&efd_set);
FD_SET(STDIN,&rfd_set);
FD_SET(client_fd,&rfd_set);
FD_SET(client_fd,&wfd_set);
FD_SET(client_fd,&efd_set);
timeout.tv_sec=10;
timeout.tv_usec=0;
ret=select(client_fd+1,&rfd_set,&wfd_set,&efd_set,&timeout);
if(ret==0)
{
continue;
}
if(ret
您可能感兴趣的文章:
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。
站内导航:
特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!