InstagramTwitterSnapChat


 
وصف

العودة   منتديات سكاو > الكليات الجامعية > منتدى كلية الحاسبات وتقنية المعلومات > منتدى قسم علوم الحاسبات
التسجيل مشاركات اليوم البحث
   
   


ارجو المساعدة برنامج بين الـ2clients و server

منتدى قسم علوم الحاسبات

إضافة رد
 
أدوات الموضوع إبحث في الموضوع انواع عرض الموضوع
منتديات طلاب وطالبات جامعة الملك عبد العزيز منتديات طلاب وطالبات جامعة الملك عبد العزيز
  #1  
قديم 30-12-2011, 04:34 PM
الصورة الرمزية eih

eih eih غير متواجد حالياً

جامعي

 
تاريخ التسجيل: Mar 2008
نوع الدراسة: إنتظام
الجنس: أنثى
المشاركات: 198
Skaau.com (23) ارجو المساعدة برنامج بين الـ2clients و server


السلام عليكم
أرجو المساعدة في برنامج يربط بين 2 كلاينت وسيرفر واحد
قبل الاتصال السيرفر يسأل الكلاينت عن اليوزر والباسورد اللي راح تكون مخزنه في ملف .txt
واذا كان الباسورد صح راح يصير زي الشات بينهم واذا تم ارسال -1 يتم قطع الاتصال
الكود بلغة السي لنظام لينكس انا اشتغل في برنامج VMWare
أتمنى ان يكون الشرح واضح
واتمنى المساعده عاااجلا

هذي محاولاتي :)

كود:
//server side
#include <stdio.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include<stdlib.h> 
#include<time.h> 
#include<malloc.h>
#include<unistd.h>
 
#define ERROR   -1
#define MAX_CLIENTS  2
#define BUFFER  1024
#define maxmem_size 192
 
        typedef struct 
    {
        unsigned int ID;
        char username[30];
        char pass[30];
 
 
    } UData;
 
        int in;
        UData inputQ[maxmem_size];
 
        int ind (int index) // to arrange the indexes
        {
             in=+index;
             return in;
        }
 
 
void error(char *msg)
{
    perror(msg);
    exit(1);
}
 
int main (int argc, char *argv[])
{
     int sockfd, newsockfd, portno, clilen;
     int ppid;
     char buffer[256];
     char input[BUFFER];
     struct sockaddr_in serv_addr, cli_addr;
     int n;
     pid_t processid ;
 
 
    char username[30];
    char pass[30];
    char user;
    int i,len,port;
    char content[30];
 
    if((sockfd=socket(AF_INET,SOCK_STREAM,IPPROTO_TCP))==-1)
    {
        printf("\nSocket problem");
        return 0;
    }
    printf("\nSocket created\n");
    bzero((char*)&cli_addr,sizeof(serv_addr));
    portno = atoi(argv[1]);
    serv_addr.sin_family = AF_INET;
    serv_addr.sin_addr.s_addr = INADDR_ANY;
    serv_addr.sin_port = htons(atoi(argv[1]));
 
    if (bind(sockfd, (struct sockaddr *) &serv_addr, sizeof(serv_addr)) < 0)
    {
        printf("\nBinding problem");
        return 0;
    }
 
    n = listen(sockfd, 2);
 
    if (newsockfd = accept(sockfd,((struct sockaddr *)&cli_addr),&n) < 0)
    {
        printf("\nCheck the deion parameter\n");
        return 0;
    }
 
    printf("\n\t\t\tConnection accepted!\n");
 
    static const char filename[] = "data.txt";
        FILE *fp = fopen("data.txt", "r");
        // File failed to open?
    if (fp != NULL)
    {
 
           char line[BUFSIZ];
           printf("\t<User Name>          <Password>\n");
           printf("\t----------------------------------\n");
           i=0;
 
           while ( fgets(line, sizeof line, fp) != NULL && sscanf(line, "%s %s",&inputQ[i].username, &inputQ[i].pass) == 2 )
              {
                   i++;
               }
 
               int  s = i; // number of lines in text file (No. of Processes)
 
               for(i = 0 ; i < s ;i++)
                {
              printf("\t    %s      %s\n",inputQ[i].username,inputQ[i].pass);
                }
 
             }
 
       i = recv(newsockfd,username,30,0);
 
       if(i)
      { 
          username[i]='\0';
          printf("\nClient: %s\n",username);
      }
        //compare between client input and data in file
 
       int z=atoi(username);
       int s=i;
            for(i = 0 ; i < s ;i++)
            {
                if(z==inputQ[i].username)
                {
                    i=1;
                    send(newsockfd,"Welcome: username is found",30,0);
 
                    printf("New client connect from port no. %d and IP %s and ppid %d \n" , ntohs(cli_addr.sin_port), inet_ntoa(cli_addr.sin_addr),getppid());
                }
 
       else
       {
          printf("Invalid login\n");
          exit(0);
        }
 
    if(fork())
    {
        printf("\nEnter the data to be send type -1 for stop:\n");
        scanf("%s",input);
 
        while(strcmp(input,"-1")!=0)
        {
            send(newsockfd,input,30,0);
            scanf("%s",input);
        }
 
        send(newsockfd,"-1",5,0);
    }
    else
        i = recv(newsockfd,input,30,0);
 
    while(strcmp(input,"-1")!=0)
    {
        printf("\nClient: %s\n",input);
        i=recv(newsockfd,input,30,0);
    }
 
 }         
}

كود:
//Client side
#include<stdio.h>
#include<sys/types.h>
#include<netinet/in.h>
#include<string.h>
#include<sys/socket.h>
#include<stdlib.h>
#include<unistd.h>
#include<arpa/inet.h>
 
#define ERROR   -1
#define BUFFER  1024
#define maxmem_size 192
 
        typedef struct 
    {
        unsigned int ID;
        char username[30];
        char pass[30];
 
 
    } UData;
 
        int in;
        UData inputQ[maxmem_size];
 
        int ind (int index) // to arrange the indexes
        {
             in=+index;
             return in;
        }
 
main (int argc, char argv)
{
 
   struct sockaddr_in cli;
   int sockfd;
   char input[BUFFER];
   char output[BUFFER];
   char line[BUFSIZ];
   char username[30];
   char pass2[30];
   char user;
   int len;
   int con,port,i,Res;
 
   if((sockfd = socket(AF_INET, SOCK_STREAM, 0)) == ERROR)
       {
           perror("socket: ");
           exit(-1);
       }
 
       cli.sin_family = AF_INET;
       cli.sin_port = htons(atoi(argv[2]));
       cli.sin_addr.s_addr = inet_addr(argv[1]);
       bzero(&cli.sin_zero, 8);
 
       if((connect(sockfd, (struct sockaddr *)&cli, sizeof(struct sockaddr_in))) == ERROR)
       {
            perror("connect");
            exit(-1);
       }
 
       printf("Please enter the user name:  \n");
       scanf("%s", username);
 
 
            send(sockfd,username,30,0);
            scanf("%s",username);
 
       if(fork())
    {
        printf("\nEnter the data to be send type -1 for stop:\n");
        scanf("%s",input);
 
        while(strcmp(input,"-1")!=0)
        {
            send(sockfd,input,30,0);
            scanf("%s",input);
        }
        send(sockfd,"-1",5,0);
    }
    else
    {
        i=recv(sockfd,input,30,0);
 
        while(strcmp(input,"-1")!=0)
        {
            printf("\nServer: %s\n",input);
            i=recv(sockfd,input,30,0);
        }
        send(sockfd,"-1",5,0);
    }
    close(sockfd);
    return 0;
}
رد مع اقتباس

 

إضافة رد


تعليمات المشاركة
لا تستطيع إضافة مواضيع جديدة
لا تستطيع الرد على المواضيع
لا تستطيع إرفاق ملفات
لا تستطيع تعديل مشاركاتك

BB code is متاحة
كود [IMG] متاحة
كود HTML معطلة

الانتقال السريع

 


الساعة الآن 05:43 AM


Powered by vBulletin® Version 3.8.9 Beta 3
Copyright ©2000 - 2024, vBulletin Solutions, Inc.
Ads Organizer 3.0.3 by Analytics - Distance Education

أن كل ما ينشر في المنتدى لا يمثل رأي الإدارة وانما يمثل رأي أصحابها

جميع الحقوق محفوظة لشبكة سكاو

2003-2023