首页 Linux Socket编程实例

Linux Socket编程实例

举报
开通vip

Linux Socket编程实例LinuxSocket编程实例(一个HelloWorld程序)在Linux下写了个小的socket程序,分为客户端和服务器端,服务端开一个端口(2000),做为一个daemon,等待客户的连接请求.一旦有客户连接,服务器端打印出客户端的IP地址和端口,并且向服务器端发送欢迎信息和时间.下面是服务端的代码(tcpserver.c).由于这只是个简单的程序,所以只用了单线程实现!Cpp代码1./** 2. * Tcp Server program, It is a simple example only. 3. * z...

Linux Socket编程实例
LinuxSocket编程实例(一个HelloWorld程序)在Linux下写了个小的socket程序,分为客户端和服务器端,服务端开一个端口(2000),做为一个daemon,等待客户的连接请求.一旦有客户连接,服务器端打印出客户端的IP地址和端口,并且向服务器端发送欢迎信息和时间.下面是服务端的代码(tcpserver.c).由于这只是个简单的程序,所以只用了单线程实现!Cpp代码1./** 2. * Tcp Server program, It is a simple example only. 3. * zhengsh 200520602061 2 4. * when client connect to server, send a welcome message and timestamp in server. 5. */ 6.   7.#include  8.#include   9.#include   10.#include   11.#include   12.#include   13.#include   14.  15.#define SERVER_PORT 20000 // define the defualt connect port id  16.#define LENGTH_OF_LISTEN_QUEUE 10 //length of listen queue in server  17.#define BUFFER_SIZE 255  18.#define WELCOME_MESSAGE "welcome to connect the server. "  19.  20.  21.int main(int argc, char **argv)  22.{  23.    int servfd,clifd;  24.    struct sockaddr_in servaddr,cliaddr;  25.  26.    if ((servfd = socket(AF_INET,SOCK_STREAM,0)) < 0)  27.    {  28.       printf("create socket error!\n");  29.       exit(1);  30.    }  31.    bzero(&servaddr,sizeof(servaddr));  32.    servaddr.sin_family = AF_INET;  33.    servaddr.sin_port = htons(SERVER_PORT);  34.    servaddr.sin_addr.s_addr = htons(INADDR_ANY);  35.  36.    if (bind(servfd,(struct sockaddr*)&servaddr,sizeof(servaddr))<0)  37.    {  38.       printf("bind to port %d failure!\n",SERVER_PORT);  39.       exit(1);  40.    }  41.  42.    if (listen(servfd,LENGTH_OF_LISTEN_QUEUE) < 0)  43.    {  44.       printf("call listen failure!\n");  45.       exit(1);  46.    }  47.  48.    while (1)  49.    {//server loop will nerver exit unless any body kill the process  50.       char buf[BUFFER_SIZE];  51.       long timestamp;  52.       socklen_t length = sizeof(cliaddr);  53.       clifd = accept(servfd,(struct sockaddr*)&cliaddr,&length);  54.       if (clifd < 0)  55.       {  56.           printf("error comes when call accept!\n");  57.           break;  58.       }  59.       strcpy(buf,WELCOME_MESSAGE);  60.       //inet_ntop(INET_ADDRSTRLEN,cliaddr.sin_addr,buf,BUFFER_SIZE);  61.        62.       printf("from client,IP:%s,Port:%d\n",inet_ntoa(cliaddr.sin_addr),ntohs(cliaddr.sin_port));  63.       timestamp = time(NULL);  64.       strcat(buf,"timestamp in server:");  65.       strcat(buf,ctime(×tamp));  66.       send(clifd,buf,BUFFER_SIZE,0);  67.       close(clifd);       68.        69.    }//exit  70.    close(servfd);  71.    return 0;  72.} 
本文档为【Linux Socket编程实例】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_266065
暂无简介~
格式:doc
大小:19KB
软件:Word
页数:7
分类:
上传时间:2021-11-30
浏览量:2