出自:Linux 网络编程
服务端:
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <time.h>
#include <string.h>
#include <stdio.h>
#define BUFFLEN 1024
#define SERVER_PORT 8888
#define BACKLOG 5
int main(int argc, char *argv[])
{
int s_s, s_c;
struct sockaddr_in local, from;
time_t now;
char buff[BUFFLEN];
int n = 0;
int len = sizeof(from);
/* 建立TCP 套接字 */
s_s = socket(AF_INET, SOCK_STREAM, 0);
/* 初始化地址 */
memset(&local, 0, sizeof(local));
local.sin_port = htons(SERVER_PORT);
local.sin_family = AF_INET;
local.sin_addr.s_addr = htonl(INADDR_ANY);
bind(s_s, (struct sockaddr*)&local, sizeof(local));
int err = listen(s_s, BACKLOG);
while(1)
{
s_c = accept(s_s, (struct sockaddr*)&from, &len);
memset(buff, 0, BUFFLEN);
now = time(NULL);
/* ssize_t recv(int s, void *buff, size_t len, int flags); */
n = recv(s_c, buff, BUFFLEN, 0);
if (n > 0 && !strncmp(buff, "TIME", 4))
{
memset(buff, 0, BUFFLEN);
now = time(NULL);
sprintf(buff, "%24s\r\n", ctime(&now));
send(s_c, buff, strlen(buff), 0);
}
close(s_c);
}
close(s_s);
return 0;
}
客户端:
include <sys/socket.h>
#include <netinet/in.h>
#include <string.h>
#include <stdio.h>
#define SERVER_PORT 8888
#define BUFFLEN 1024
int main(int argc, char *agrv[])
{
int s;
char buff[BUFFLEN];
struct sockaddr_in server;
memset(&server, 0, sizeof(server)); /* 清零 */
server.sin_family = AF_INET;
server.sin_port = htons(SERVER_PORT);
server.sin_addr.s_addr = htonl(INADDR_ANY); /* 任意本地地址 */
s = socket(AF_INET, SOCK_STREAM, 0);
/* 连接本地服务器 */
int err = connect(s, (struct sockaddr*)&server, sizeof(server));
memset(buff, 0, BUFFLEN);
strcpy(buff, "TIME");
/* 发送数据 */
send(s, buff, strlen(buff), 0);
memset(buff, 0, BUFFLEN);
/* 接受数据 */
int n = recv(s, buff, BUFFLEN, 0);
if (n > 0)
{
printf("TIME:%s", buff);
}
close(s);
return 0;
}