套接字问题

IanChenV 2014-04-04 10:41:46
刚学linux的网络编程,为什么按照书里的程序写的服务器端,一直循环显示
client IP is 255.255.255.255,port is 1032
Content is :
client IP is 255.255.255.255,port is 1032
Content is :
client IP is 255.255.255.255,port is 1032
Content is :
client IP is 255.255.255.255,port is 1032
Content is :
client IP is 255.255.255.255,port is 1032
Content is :
client IP is 255.255.255.255,port is 1032
Content is :
client IP is 255.255.255.255,port is 1032
Content is :
client IP is 255.255.255.255,port is 1032
Content is :
client IP is 255.255.255.255,port is 1032
Content is :


#include <stdio.h>
#include <unistd.h>
#include <ctype.h>
#include <sys/socket.h>
#include <arpa/inet.h>


#define MAX_LINE 100

int main()
{
struct sockaddr_in sin;
struct sockaddr_in cin;
int l_fd;
int c_fd;
socklen_t len;
char buf[MAX_LINE];
char addr_p[INET_ADDRSTRLEN];
int port = 9090;
int n;

bzero(&sin,sizeof(struct sockaddr_in));
sin.sin_family = AF_INET;
sin.sin_addr.s_addr = htonl(INADDR_ANY);
sin.sin_port = htons(port);


l_fd = socket(AF_INET,SOCK_STREAM, 0);

bind(l_fd,(struct sockaddr*)(&sin),sizeof(sin));

listen(l_fd, 10);

printf("waiting.......\n");


while(1){

c_fd = accept(c_fd,(struct sockaddr*)&cin,&len);
n = read(c_fd,buf,MAX_LINE);

inet_ntop(AF_INET,&cin.sin_addr,addr_p,sizeof(addr_p));

printf("client IP is %s,port is %d\n",addr_p,ntohs(cin.sin_port));


printf("Content is : %s\n",buf);
close(c_fd);
}
if(close(l_fd) == -1){
perror("fail to close");
exit(1);
}
return 0;
}
...全文
103 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

23,110

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
  • 应用程序开发区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧