长连接和短连接是由客户端决定的
短连接是客户端每做一个通信就连接一次
如果是频繁的业务模型,长连接比较好
写一个短连接的的例子:
#include<unistd.h>
#include<sys/stat.h>
#include<sys/wait.h>
#include<sys/types.h>
#include<fcntl.h>
#include<stdlib.h>
#include<stdio.h>
#include<errno.h>
#include<string.h>
#include<signal.h>
#include<arpa/inet.h>
#include<sys/socket.h>
#include<netinet/in.h>
#include<arpa/inet.h>
#include<sys/socket.h>
int main(){
int i=0;
for(i=0;i<10;i++){
int sockfd=0;
sockfd=socket(AF_INET,SOCK_STREAM,0);
if(sockfd==-1){
perror("fun socket\n");
exit(0);
}
struct sockaddr_in serveraddr;
serveraddr.sin_family=AF_INET;
serveraddr.sin_port=htons(8001);
serveraddr.sin_addr.s_addr=inet_addr("127.0.0.1");
if(connect(sockfd, (const struct sockaddr *)&serveraddr,sizeof(serveraddr))<0){
perror("fun connetc");
exit(0);
};
char revbuf[1024]={0};
char sendbuf[1024]={0};
{
sprintf(sendbuf,"i:%d\n",i);
write(sockfd,sendbuf,strlen(sendbuf));//服务端回发信息
//从服务器读数据
read(sockfd,revbuf,sizeof(revbuf));
fputs(revbuf,stdout);//从服务器收到数据,打印屏幕
memset(revbuf,0,sizeof(revbuf));
memset(sendbuf,0,sizeof(sendbuf));
}
close(sockfd);
}
return 0;
}
客户端:
服务端: