Linux中客户端向服务端读取时间的简单实现
客户端的连接的主要步骤有初始化套接字(socket),连接服务端(connect),接收/发送(send/recv),关闭(close)等。
服务端的连接的主要步骤有初始化套接字(socket),邦定(bind),监听(listen),接收/发送(send/recv),关闭(close)等。
由于在Linux中所有设备都可以看作文件,接收/发送(send/recv)也可以用write/read来代替。
下面是服务端service.c的代码:
#include <stdio.h>
#include <sys/types.h>
#include <netinet/in.h>
#include <sys/socket.h>
#include <netdb.h>
#include <unistd.h>
#include <string.h>
#include <time.h>
#define HOSTNAMELEN 40 //主机名长度
#define BUFLEN 1024
#define PORT 13000 //端口
int main(int argc, char *argv[])
{
int rc;
int s1;
int sockfd;
char buf[BUFLEN+1];
char* pc;
struct sockaddr_in local;
struct hostent* hen;
//主机
hen = gethostbyname("127.0.0.1");
if (!hen)
{
perror("couldn't resolve host name");
exit(1);
}
//初始化
memset(&local, 0, sizeof(local));
local.sin_family = AF_INET;
local.sin_port = htons(PORT);
memcpy(&local.sin_addr.s_addr, hen->h_addr_list[0], hen->h_length);
sockfd = socket(AF_INET, SOCK_STREAM, 0);
if (sockfd < 0)
{
perror("socket() failed");
exit(1);
}
//邦定
rc = bind(sockfd,(struct sockaddr *)&local,sizeof(local));
if (rc<0)
{
perror("bind() failed");
exit (1);
}
//监听
rc=listen(sockfd,5);
if (rc)
{
perror("listen() failed");
exit(1);
}
//接收
s1=accept(sockfd,NULL,NULL);
if(s1<0)
{
perror("accpet() failed");
exit(1);
}
//取得时间
time_t ti;
ti=time(NULL);
char str[100];
sprintf(str,ct
相关文档:
这有几篇文章,值得一读
http://blog.csdn.net/wuxiaoming1733/archive/2008/10/29/3175296.aspx
http://blog.csdn.net/wooin/archive/2006/12/30/1468797.aspx
http://blog.csdn.net/wooin/archive/2006/03/10/620791.aspx
http://blog.csdn.net/wuxiaoming1733/archive/2008/10/13/3068226.aspx
http://blog.csdn.ne ......
Linux下的安装与配置
如果所安装的Linux系统没有内置的MySQL,笔者建议在Linux中使用RPM包来安装MySQL,同样这也是MySQL官方提供的建议。笔者接触最多的Linux系统是Radhat的“近亲”:CentOS,由于CentOS较新的版本都内置了MySQL,因此在安装系统时就将MySQL安装并注册为系统服务,省去了不少工作量,此处也就不 ......
1.Linux文件系统
Linux
支
持多种文件系统,如ext、ext2、minix、iso9660、msdos、fat、vfat、nfs等。在这些具体文件系统的上层,Linux提供
了虚拟文件系统(VFS)来统一它们的行为,虚拟文件系统为不同的文件系统与内核的通信提供了一致的接口。下图给出了Linux中文件系统的关系:
在Linux平台下对文件编程可 ......