请转载者,尊重作者(xiaobin)的劳动成果!
在第一个实例我们已经编写了客户端程序,本篇编写他的姊妹篇---服务器端程序。
基本上,服务器端程序既是客户端程序的“反”程序!
1. 建立socket通信
2. 初始化servaddr
2.1 置0
2.2 设置协议族
2.3 设置端口
2.4 设置ip地址为本机所有地址/任意地址
3. 绑定socket的端口
4. 监听socket
以上2.4, 3, 4是为客户端的connect做准备的。
循环执行:
5. 接受连接
6. 发送数据
7. 关闭连接
第二个运行实例!
daytimetcpsrv.c
#include "./lib/unp.h" #include <time.h> #define LISTEN_QUEUE 20 int main(int argc, char **argv) { int listenfd, connfd; struct sockaddr_in servaddr; char buff[MAXLINE]; time_t ticks; listenfd = socket(AF_INET, SOCK_STREAM, 0); bzero(&servaddr, sizeof(servaddr)); servaddr.sin_family = AF_INET; servaddr.sin_addr.s_addr = htonl(INADDR_ANY); servaddr.sin_port = htons(13); bind(listenfd, (struct sockaddr *) &servaddr, sizeof(servaddr)); listen(listenfd, LISTEN_QUEUE); for ( ; ; ) { connfd = accept(listenfd, (struct sockaddr *) NULL, NULL); time(&ticks); snprintf(buff, sizeof(buff), "%s\n", ctime(&ticks)); write(connfd, buff, strlen(buff)); close(connfd); } }
编译:
root@xiaobin-desktop:/home/xiaobin/temp# cc daytimetcpsrv.c -o daytime1.out
运行:
root@xiaobin-desktop:/home/xiaobin/temp# ./daytime1.out
-------------------------------------------------------------------------end-------
测试:
使用windows的telnet来测试我们程序是否运行正常,
在命令提示符中输入:telnet 192.168.101.128 13
(其中192.168.101.128为服务器ip地址;13既是上面程序中我们使用的端口号)
如果出现图中红色方框中的内容,既表示服务器端程序运行正常。