简单的服务器通信例子,从取服务端获取时间

服务器端代码:

#include"mylib.h"

#define MAX_LISTEN_QUE 5

int main(int argc,char *argv[])
{
	int sockfd,listenfd;
	struct sockaddr_in server,client;
	socklen_t len;
	time_t timep;
	char buf[200]={0};
	int opt;
 
	if((listenfd = socket(AF_INET,SOCK_STREAM,0))<0)
	{
		perror("Creat socket failed\n");
		return -1;
	}
	
	//监听套接字 地址可重用
	if((setsockopt(listenfd,SOL_SOCKET,SO_REUSEADDR,&opt,sizeof(opt)))<0)
	{
		perror("Error,set socket reuse addr failed\n");
		return -5;
	}
	
	bzero(&server,sizeof(server));
	server.sin_family	= AF_INET;
	server.sin_port = htons(10000);
	server.sin_addr.s_addr =  htonl(INADDR_ANY);
	
	len = sizeof(struct sockaddr);
	if(bind(listenfd,(struct sockaddr*)(&server),sizeof(server))<0)
	{
		perror("bind error\n");
		return -2;
	}
	
	listen(listenfd,MAX_LISTEN_QUE);
	while(1)
	{
		sockfd = accept(listenfd,(struct sockaddr *)&client,&len);
		if(sockfd<0)
		{
			perror("accept error\n");
			return -3;
		}
		
		timep = time(NULL);
		snprintf(buf,sizeof(buf),"%s",ctime(&timep));
		write(sockfd,buf,strlen(buf));
		printf("Bytes:%d\n",strlen(buf));
		close(sockfd);
	}
	return 0;
}





客户端代码:

#include"mylib.h"

int main(int argc,char *argv[])
{
	int sockfd;
	struct sockaddr_in servaddr;
	char buf[100]={0};
	int Rbytes;

	if((sockfd = socket(AF_INET,SOCK_STREAM,0))<0)
	{
		perror("socket error\n");
		return -1;
	}
	
	bzero(&servaddr,sizeof(servaddr));
	servaddr.sin_family	= AF_INET;
	servaddr.sin_addr.s_addr =  inet_addr("127.0.0.1");
//	servaddr.sin_addr.s_addr =  htonl(INADDR_ANY);//inet_addr("127.0.0.1");
	servaddr.sin_port = htons(10000);
	
	if(connect(sockfd,(struct sockaddr*)(&servaddr),sizeof(servaddr))<0)
	{
		perror("connect error\n");
		return -2;
	}
	
	Rbytes = read(sockfd,buf,100);
	if(Rbytes < 0)
	{
		perror("Error,read failed\n");
		return -2;
	}
	if(0 == Rbytes)
	{
		perror("Server close connection\n");
		return -3;		
	}
	printf("Read bytes %d\n",Rbytes);
	printf("Time:%s\n",buf);
	
	close(sockfd);
	
	return 0;
}


实验结果:

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值