客户端程序
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<errno.h>
#include<sys/types.h>
#include<sys/socket.h>
#include<netinet/in.h>
#include<arpa/inet.h>
#include<unistd.h>
#define MAXLINE 100
int main(int argc,char** argv)
{
int sockfd,n;
char recvline[MAXLINE+1];
struct sockaddr_in servaddr;
if(argc != 2)
{
fprintf(stderr,"缺少IP地址的参数!\n");
exit(EXIT_FAILURE);
}
if( (sockfd = socket(AF_INET,SOCK_STREAM,0)) < 0)
{
fprintf(stderr,"网际字节流套接字创建失败!\n");
exit(EXIT_FAILURE);
}
bzero(&servaddr,sizeof(servaddr));
servaddr.sin_family = AF_INET;
servaddr.sin_port = htons(6666);
if(inet_pton(AF_INET,argv[1],&servaddr.sin_addr) <= 0)
{
fprintf(stderr,"inet_pton错误!");
exit(EXIT_FAILURE);
}
if( connect(sockfd,(struct sockaddr*)&servaddr,sizeof(servaddr)) < 0 )
{
fprintf(stderr,"connect失败!");
exit(EXIT_FAILURE);
}
while((n = read(sockfd,recvline,MAXLINE)) > 0)
{
recvline[n] = 0;
if(fputs(recvline,stdout) == EOF)
fprintf(stderr,"fputs() error\n");
}
if(n < 0)
fprintf(stderr,"read error\n");
exit(0);
}
服务端程序
#include<time.h>
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<errno.h>
#include<sys/types.h>
#include<sys/socket.h>
#include <arpa/inet.h>
#include<unistd.h>
#define MAXLINE 100
int main(int argc,char** argv)
{
int listenfd,connfd;
struct sockaddr_in servaddr;
char buff[MAXLINE];
time_t ticks;
if( (listenfd = socket(AF_INET,SOCK_STREAM,0)) < 0)
{
fprintf(stderr,"网际字节流套接字创建失败!\n");
exit(EXIT_FAILURE);
}
bzero(&servaddr,sizeof(servaddr));
servaddr.sin_family = AF_INET;
servaddr.sin_addr.s_addr = htonl(INADDR_ANY);
servaddr.sin_port = htons(6666);
if(bind(listenfd,(struct sockaddr*)&servaddr,sizeof(servaddr)) == -1)
{
printf("bind socket error\n");
exit(EXIT_FAILURE);
}
if(listen(listenfd,10) == -1)
{
printf("listen socket error\n");
}
printf("等待客户端请求的到来\n");
while(1)
{
if( (connfd = accept(listenfd,(struct sockaddr*)NULL,NULL)) == -1)
{
printf("accpet error\n");
continue;
}
ticks = time(NULL);
snprintf(buff,sizeof(buff),"%.24s\r\n",ctime(&ticks));
if((write(connfd,buff,strlen(buff))) == -1)
{
printf("write error\n");
}
}
close(connfd);
return 0;
}
Ubuntu下的运行试验