日期:2014-05-16 浏览次数:20707 次
#ifdef HAVE_CONFIG_H
#include <config.h>
#endif
#include <stdio.h>
#include <stdlib.h>
#include<sys/types.h>
#include<sys/socket.h>
#include<pthread.h>
#include<unistd.h>
#include<errno.h>
#include<netdb.h>
#include<string.h>
int main(int argc, char *argv[])
{
int sockfd, new_fd;
struct sockaddr_in server_addr;
struct sockaddr_in client_addr;
int sin_size, portnumber;
char reply[]="收到数据!";
char recv_buf[1024];
int nbytes;
if(argc != 2)
{
fprintf(stderr, "Usage:%s portnumber\a\n", argv[0]);
exit(1);
}
if((portnumber = atoi(argv[1])) < 0)
{
fprintf(stderr, "Usage:%s portnumber\a\n", argv[0]);
exit(1);
}
/*服务器端开始建立socket描述符*/
if((sockfd = socket(AF_INET, SOCK_STREAM, 0)) == 1)
{
fprintf(stderr, "socket error:%s portnumber\a\n", strerror(errno));
exit(1);
}
/*服务器端填充sockaddr结构*/
bzero(&server_addr, sizeof(struct sockaddr));
server_addr.sin_family = AF_INET;
server_addr.sin_addr.s_addr = htonl(INADDR_ANY);
server_addr.sin_port = htons(portnumber);
/*捆绑sockfd描述符*/
if(bind(sockfd, (struct sockaddr *)(&server_addr), sizeof(struct sockaddr)) == -1)
{
fprintf(stderr, "Bind error:%s\n\a", strerror(errno));
exit(1);
}
/*监听sockfd描述符号*/
if(listen(sockfd, 5) == -1)
{
fprintf(stderr, "Listen error:%s\n\a", strerror(errno));
exit(1);
}
printf("服务器进程已开启...\n");
while(1)
{
/*服务器阻塞,直到客户端程序建立连接*/
sin_size;
if((new_fd = accept(sockfd, (struct sockaddr *)(&client_addr), &sin_size)) == -1)
{
fprintf(stderr, "Accept error:%s\n\a", strerror(errno));
exit(1);
}
printf("Server get connection from %s\n", ine