`
cjj_720
  • 浏览: 32017 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

linux下socket示例

阅读更多
/* server.c */
#include <stdio.h>
#include <stdlib.h>
#include <errno.h>
#include <string.h>
#include <sys/types.h>
#include <netinet/in.h>
#include <sys/socket.h>
#include <sys/wait.h>
#include <unistd.h>
int main(void)
{
  int sockfd,new_fd;
        struct sockaddr_in my_addr;
        struct sockaddr_in their_addr;
        size_t sin_size;
        char buff[1024];
        int numbytes;
        //创建socket
        if((sockfd = socket(AF_INET,SOCK_STREAM,0))==-1)
        {
                perror("socket");
                exit(1);
        }
        
        my_addr.sin_family = AF_INET;
        my_addr.sin_port = htons(2323);
        my_addr.sin_addr.s_addr = INADDR_ANY;
        bzero(&(my_addr.sin_zero),8);
        
        if(bind(sockfd,(struct sockaddr *)&my_addr,sizeof(struct sockaddr))==-1)
        {
                perror("bind");
                exit(1);
        }
        
        if(listen(sockfd,10)==-1)
        {
                perror("listen");
                exit(1);
        }
        
        
        while(1) {
                sin_size = sizeof(struct sockaddr_in);
                perror("server is run");
                
                if((new_fd = accept(sockfd,(struct sockaddr *)&their_addr,&sin_size))==-1)
                {
                        perror("accept");
                        exit(1);
                }
                // 新起一个进程
                if(!fork())
                {
                        
                        if((numbytes = recv(new_fd,buff,1024,0))==-1)
                        {
                                perror("recv");
                                exit(1);
                        }
                        printf("%s",buff);
                        
                        if(send(new_fd,buff,numbytes,0)==-1)
                                perror("send");
                        close(new_fd);
                        exit(0);
                }
                close(new_fd);
        }
        close(sockfd);
}

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics