Linux下C语言实现C/S模式编程

由标题可知,这篇文章主要讲如何用C语言实现一个C/S模式的程序。

主要功能:时间回送。

客户机发出请求,服务器响应时间,并返回服务器时间,与客户机进行同步。

废话不多说,下面直接贴出源代码。

代码如下:

#include <stdio.h>

#include <stdlib.h>

#include <string.h>

#include <unistd.h>

#include <errno.h>

#include <time.h>

#include <sys/types.h>

#include <sys/socket.h>

#include <arpa/inet.h>

void client_process(int connfd);

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

{

int ret;

int listenfd;

int connfd;

struct sockaddr_in srvaddr;

struct sockaddr_in cliaddr;

socklen_t addrlen;

listenfd = socket(AF_INET, SOCK_STREAM, 0);

if (listenfd == -1) {

perror("socket");

exit(EXIT_FAILURE);

}

srvaddr.sin_family = AF_INET;

srvaddr.sin_port = htons(8888);

srvaddr.sin_addr.s_addr = htonl(INADDR_ANY);

ret = bind(listenfd, (struct sockaddr *)&srvaddr, sizeof(srvaddr));

if (ret == -1) {

perror("bind");

exit(EXIT_FAILURE);

}

ret = listen(listenfd, 5);

if (ret == -1) {

perror("listen");

exit(EXIT_FAILURE);

}

while (1) {

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

addrlen = sizeof(cliaddr);

connfd = accept(listenfd, (struct sockaddr *)&cliaddr, &addrlen);

if (connfd != -1) {

printf("a new client is comming\n");

client_process(connfd);

printf("disconnect\n");

close(connfd);

} else

perror("accept");

}

close(listenfd);

}

void client_process(int connfd)

{

int ret;

char buf[4096];

while (1) {

memset(buf, 0, sizeof(buf));

strcpy(buf, "Kevin@TimeServer $ ");

ret = write(connfd, buf, strlen(buf) + 1);

if (ret == -1) {

perror("write");

return;

}

memset(buf, 0, sizeof(buf));

ret = read(connfd, buf, sizeof(buf));

if (ret > 0) {

if (strcmp(buf, "time\r\n") == 0) {

time_t t;

memset(buf, 0, sizeof(buf));

strcpy(buf, "Kevin@TimeServer $ ");

ret = write(connfd, buf, strlen(buf) + 1);

if (ret == -1) {

perror("write");

return;

}

time(&t);

strcpy(buf, ctime(&t));

ret = write(connfd, buf, strlen(buf) + 1);

if (ret == -1) {

perror("write");

return;

}

}

} else if (ret == -1) {

perror("read");

return;

} else

return;

}

}

主要过程

1.建立源程序,输入源代码。

2.打开一个终端,编译运行程序。编译程序:gcc cs.c   运行程序:./a.out

3.新开一个终端,输入:telnet localhost 8888

主窗口效果如下:


4.在子窗口中输入:time

子窗口显示如下:

5.关闭子窗口,主窗口显示:连接断开。

效果如下:

好吧,程序就讲到这里了,希望大家喜欢,对大家的学习有所帮助。

以上是 Linux下C语言实现C/S模式编程 的全部内容, 来源链接: utcz.com/z/359038.html

回到顶部