MAC OS X socket 1 [a simple example]

來源:互聯網
上載者:User

標籤:blog   http   使用   資料   os   2014   

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


相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.