注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

Mihooke's blog

IT之恋

 
 
 

日志

 
 

socket网络编程  

2015-04-30 23:29:14|  分类: Linux |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

/*

*  main.c----服务器代码

*  socket_exam

*

*  Created by M on 15-4-29.

*  Copyright (c) 2015年 Mihooke. All rights reserved.

*/

 

#include <stdio.h>

#include <unistd.h>

#include <stdlib.h>

#include <string.h>

#include <errno.h>

#include <sys/types.h>

#include <sys/socket.h>

#include <netinet/in.h>

#define MAXLINE 4096

#define DEFAULT_PORT 8000

 

int main(int argc, const char * argv[]) {

    int sock_fd, connfd;

    struct sockaddr_in servaddr;

    char buf[MAXLINE];

    int n;

   

    if((sock_fd = socket(AF_INET, SOCK_STREAM, 0)) == -1)

    {

        printf("create fail:%s,errno:%d\n", strerror(errno), errno);

        exit(0);

    }

    memset(&servaddr, 0, sizeof(servaddr));

    servaddr.sin_family = AF_INET;

    servaddr.sin_addr.s_addr = htonl(INADDR_ANY);

    servaddr.sin_port = htons(DEFAULT_PORT);

   

    if(bind(sock_fd, (struct sockaddr*)&servaddr, sizeof(servaddr)) == -1)

    {

        printf("bind fail,%s,errno:%d\n", strerror(errno), errno);

        exit(0);

    }

   

    if(listen(sock_fd, 10) == -1)

    {

        printf("listen fail,%s,errno:%d\n", strerror(errno), errno);

        exit(0);

    }

    printf("waiting for client's request...\n");

   

    while(1)

    {

        if((connfd = accept(sock_fd, (struct sockaddr*)NULL, NULL)) == -1)

        {

            printf("accept fail,%s,errno:%d\n", strerror(errno), errno);

            continue;

        }

        n = recv(connfd, buf, MAXLINE, 0);

        if(fork() == 0)

        {

            if(send(connfd, "hi,connection\n", 15, 0) == -1)

                perror("send fail");

            close(connfd);

            exit(0);

        }

        buf[n] = '\0';

        printf("recv msg from client:%s\n", buf);

        close(connfd);

    }

//    close(sock_fd);

}

 

/*

*  client.c

*  socket_exam----客户端代码

*

*  Created by M on 15-4-29.

*  Copyright (c) 2015年 Mihooke. All rights reserved.

*/

 

#include <stdio.h>

#include <stdlib.h>

#include <unistd.h>

#include <string.h>

#include <errno.h>

#include <sys/types.h>

#include <sys/socket.h>

#include <netinet/in.h>

#include <arpa/inet.h>

#define MAXLINE 4096

 

int main(int argc, char *argv[])

{

    int sock_fd, recv_len;

    char sendline[MAXLINE], buf[MAXLINE];

    struct sockaddr_in servaddr;

   

    if(argc != 2)

    {

        fprintf(stderr, "usage:%s <IP>\n", argv[0]);

        exit(0);

    }

   

    if((sock_fd = socket(AF_INET, SOCK_STREAM, 0)) < 0)

    {

        printf("create fail\n");

        exit(0);

    }

    /*init socket*/

    memset(&servaddr, 0, sizeof(servaddr));

    servaddr.sin_family = AF_INET;

    servaddr.sin_port = htons(8000);

    if(inet_aton(argv[1], &servaddr.sin_addr) == 0)

    {

        fprintf(stderr, "dianfenshijinzhi %s to netbyte fail", argv[1]);

        exit(0);

    }

   

    if(connect(sock_fd, (struct sockaddr*)&servaddr, sizeof(servaddr)) < 0)

    {

        fprintf(stderr, "connect fail,%s,errno:%d\n", strerror(errno), errno);

        exit(0);

    }

   

    /*从标准输入获取一行,并发送到服务器端*/

    printf("send msg to server...\n");

    fgets(sendline, MAXLINE, stdin);

    if(send(sock_fd, sendline, strlen(sendline), 0) < 0)

    {

        fprintf(stderr, "send fail,-------%s,errno:%d\n", strerror(errno), errno);

        exit(0);

    }

   

    if((recv_len = recv(sock_fd, buf, MAXLINE, 0) == -1))

    {

        perror("recv fail");

        exit(1);

    }

    buf[recv_len] = '\0';

    printf("received :%s ,%d\n", buf, recv_len);

    close(sock_fd);

    exit(0);

}

 

运行结果:
  评论这张
 
阅读(39)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017