当前位置: 技术问答>linux和unix
这个程序为什么不能实现聊天?
来源: 互联网 发布时间:2016-12-10
本文导语: 有两个文件,为什么不能实现聊天? server端 #include #include #include #include #include #include #include #include int main(int argc, char* argv[]) { int fds_server = socket(AF_INET,SOCK_STREAM,0); // 创建套接字 struct s...
有两个文件,为什么不能实现聊天?
server端
server端
#include
#include
#include
#include
#include
#include
#include
#include
int main(int argc, char* argv[])
{
int fds_server = socket(AF_INET,SOCK_STREAM,0); // 创建套接字
struct sockaddr_in saddr_server;
saddr_server.sin_family = AF_INET;
saddr_server.sin_port = htons(1987);
saddr_server.sin_addr.s_addr = inet_addr("127.0.0.1");
bind(fds_server,(struct sockaddr*)&saddr_server,sizeof(struct sockaddr_in)); // 绑定
listen(fds_server,5); // 设为监听
fd_set set_read;
fd_set set_write;
int fds_hwm = fds_server;
int fds_client = 0;
struct sockaddr_in saddr_client;
int len;
char buf[1024];
while (1) {
FD_ZERO(&set_read); // 可读
FD_SET(fds_server,&set_read);
FD_ZERO(&set_write); // 可写
if (fds_client) {
FD_SET(fds_client,&set_write);
FD_SET(fds_client,&set_read);
}
if (select(fds_hwm+3,&set_read,&set_write,NULL,NULL) == -1)
printf("error!n");
if (FD_ISSET(fds_server,&set_read)) { // 有连接
fds_client = accept(fds_server,(struct sockaddr*) &saddr_client,&len);
printf("client %d comming!n",fds_client);
FD_SET(fds_client,&set_write); // 放入写
FD_SET(fds_client,&set_read); // 放入读
if (fds_hwm