如何解决我正在尝试找到一种方法让我的服务器套接字打开,直到连接的客户端发送他想要的所有消息
我正在尝试创建的函数 CreationFichier
应该为客户端发送到服务器的每条消息创建一个文本文档,以便这些消息得到储存,并且可以一次性使用以供重用。
线程函数 mess
是用于使客户端/服务器套接字在它们之间进行通信的机制。现在我正在努力寻找一种方法让我的服务器套接字打开,直到连接的客户端发送他想要的所有消息,因为客户端应该在关闭它的套接字之前发送 5 条消息。
void CreationFichier(char * a){
// creating file pointer to work with files
FILE *fptr;
// opening file in writing mode
fptr = fopen("tp.txt","w");
// exiting program
if (fptr == NULL) {
printf("Error!");
exit(1);
}
fprintf(fptr,"%s",a);
fclose(fptr);;
}
//this is the thread protocol
void * mess (void * arg){
int so=*((int *)arg);
char *mess="Bonjour";
send(so,mess,strlen(mess)*sizeof(char),0);
cha buff[100];
int recu=recv(so,buff,99*sizeof(char),0);
buff[recu]='\0';
printf("Recu : %s\n",buff);
if(strcmp(buff,"PUT")==0){
CreationFichier(buff);
}else if(strcmp(buff,"GET")==0){
}
free(arg);
close(so);
}
int main(int argc,char**argv) {
if(argc!=2){
printf("Erreur il faut fournir un numero de port");
return 0;
}
int p=atoi(argv[1]);
int sock=socket(PF_INET,SOCK_STREAM,0);
struct sockaddr_in adress_sock;
adress_sock.sin_family=AF_INET;
adress_sock.sin_port=htons(p);
adress_sock.sin_addr.s_addr=htonl(INADDR_ANY);
int r=bind(sock,(struct sockaddr*)&adress_sock,sizeof(struct sockaddr_in));
if(r=0){
r=listen(sockk,0);
while(1){
struct sockaddr_in caller;
socklen_t size=sizeof(caller);
int *sock2=(int *)malloc(sizeof(int));
*sock2=accept(sock,(struct sockaaddr *)&caller,&size)
if(*sock2>0){
printf("Nouvelle connection");
pthread_t th;
int r2=pthread_create(&th,NULL,sock2);
if(r2!=0){
printf("Probleme de creation de thread");
exit(0);
}
}
}
}else {
printf("Probleme de Bind !")
}
return 0;
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。