MAC OS X socket 1 [a simple example]

来源:互联网 发布:大学网络教育专业 编辑:程序博客网 时间:2024/05/22 06:28

MAC OS X socket 1 [a simple example]

Server Code

C:

////  main.c//  unix_socket_very_simple_server////  Created by DMD on 4/7/14./* Function : Server for unix (OS X MAC)*/#include <stdio.h>#include <stdlib.h>#include <sys/types.h>// unix socket#include <sys/socket.h>#include <netinet/in.h>#include <string.h>//服务器和客户端都使用端口:12345//服务器的地址是:127.0.0.1 在服务器里可以写任意地址,但是在客户端必须写这个地址。//因为不知道服务器地址,就无法向服务器发送数据int main(int argc, const char * argv[]){    // listen port [客户端必须使用这个端口]    unsigned short portnum=12345;        int sfp,nfp;        struct sockaddr_in s_add,c_add;        int sin_size;        printf("Starting listen in Server:\r\n");    //initialize socket    sfp = socket(AF_INET, SOCK_STREAM, 0); //TCP : SOCK_STREAM    if(-1 == sfp)    {        printf("initialize socket fail ! \r\n");        return -1;    }    printf("initialize socket ok !\r\n");        // setting socket port     bzero(&s_add,sizeof(struct sockaddr_in));    s_add.sin_family=AF_INET;    s_add.sin_addr.s_addr=htonl(INADDR_ANY);    s_add.sin_port=htons(portnum);        //bind port    if(-1 == bind(sfp,(struct sockaddr *)(&s_add), sizeof(struct sockaddr)))    {        printf("bind fail !\r\n");        return -1;    }    printf("bind ok !\r\n");        //开始监听客户端端口    if(-1 == listen(sfp,5))    {        printf("listen fail !\r\n");        return -1;    }    printf("listen ok\r\n");        while(1)    {        sin_size = sizeof(struct sockaddr_in);        //接受来自客户端的数据        nfp = accept(sfp, (struct sockaddr *)(&c_add), &sin_size);        if(-1 == nfp)        {            printf("accept fail !\r\n");            return -1;        } //       printf("accept data from client ok!\r\nServer start get connect from %d : %x\r\n",ntohl(c_add.sin_addr.s_addr),ntohs(c_add.sin_port));        printf("current client is address = %d ,port : %x\r\n",ntohl(c_add.sin_addr.s_addr),s_add.sin_port);                        //向客户端发送数据        if(-1 == write(nfp,"Server Said,\"hello,welcome to connect my server.\" \r\n",1024))        {            printf("send data to client fail!\r\n");            return -1;        }        printf("send data to client ok!\r\n");        close(nfp);    }    close(sfp);    return 0;}


Client Code

C:

////  main.c//  unix_socket_very_simple_client////  Created by DMD on 4/7/14./* Function : Client for unix (OS X MAC)*/#include <stdlib.h>#include <sys/types.h>#include <stdio.h>#include <sys/socket.h>#include <netinet/in.h>#include <string.h>int main(){    int cfd;    int recbytes;    int sin_size;    char buffer[1024]={0};    struct sockaddr_in s_add,c_add;    unsigned short portnum=12345;    printf("Hello,welcome to client !\r\n");        cfd = socket(AF_INET, SOCK_STREAM, 0);    if(-1 == cfd)    {        printf("initialize socket fail ! \r\n");        return -1;    }    printf("initialize socket ok !\r\n");        bzero(&s_add,sizeof(struct sockaddr_in));    s_add.sin_family=AF_INET;    s_add.sin_addr.s_addr= inet_addr("127.0.0.1");    s_add.sin_port=htons(portnum);    printf("current server addr = %d ,port : %x\r\n",s_add.sin_addr.s_addr,s_add.sin_port);        if(-1 == connect(cfd,(struct sockaddr *)(&s_add), sizeof(struct sockaddr)))    {        printf("connect fail !\r\n");        return -1;    }    printf("connect ok !\r\n");        if(-1 == (recbytes = read(cfd,buffer,1024)))    {        printf("read data from server fail !\r\n");        return -1;    }    printf("read data from server ok\r\n");    printf("Get Data From Server:\r\n");    buffer[recbytes]='\0';    printf("%s\r\n",buffer);    getchar();    close(cfd);    return 0;}


TEST:


Run : Server

Run :Client

1.Show some message from server in Client.

2.every open Client, show some message in Server


0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 3岁宝宝老踢被子怎么办 4岁宝宝老踢被子怎么办 四线锁边机跳线怎么办 引流管伤口洞红怎么办 甘蔗卡在喉咙里怎么办 棉花被子生虫了怎么办 绗缝羽绒服钻毛怎么办 宝珠笔没墨水了怎么办 衣服上画的笔印怎么办 黑笔芯弄衣服上怎么办 圆珠笔油在皮上怎么办 不小心吞了水银怎么办 小孩吃了洗发露怎么办? 脸上被铅笔戳了怎么办 小孩吃了铅笔芯怎么办 小孩把橡皮吃了怎么办 用棉签掏耳朵里面疼怎么办 棉签头掉耳朵里怎么办 黑裤子老是粘毛怎么办 新买的裤子掉色怎么办 黑裤子容易粘毛怎么办 裤子粘了全部毛怎么办 纯棉裤子粘毛了怎么办 裤子粘毛怎么办怎么洗 黑裤子洗白了怎么办 新买床单有味道怎么办 新买的床单扎人怎么办 刚买的衣服皱了怎么办 橘子沾到衣服上怎么办 橘子水掉衣服上怎么办 菜汁滴在衣服上怎么办 饺子面和硬了怎么办 化纤衣服烫亮了怎么办 衣服穿久了发亮怎么办 买的毛衣长了怎么办 买的毛衣袖子长怎么办 新买的毛衣扎人怎么办 玻璃光纤线断了怎么办 家里光纤线断了怎么办 光纤线断了怎么办 找谁 光纤入户线断了怎么办