قناة سكاو في الواتساب
 


حسابنا في السناب شاتحسابنا في منصة Xقناتنا في اليوتيوبحسابنا في التيك توكقناتنا في التيليجرامقناة سكاو في الواتساب
 
وصف

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


ارجو المساعدة برنامج بين الـ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 معطلة

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

 


الساعة الآن 01:13 AM


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

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

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

2003-2025