Advertisement
Abstract-Chief

klient/klient.c

Apr 28th, 2022
163
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.89 KB | None | 0 0
  1. #include <sys/types.h>
  2. #include <sys/socket.h>
  3. #include <netinet/in.h>
  4. #include<unistd.h>
  5. #include<stdlib.h>
  6. #include<stdio.h>
  7. #include<arpa/inet.h>
  8. #include<ncurses.h>
  9. #include<time.h>
  10. #include<signal.h>
  11. void error(const char *msg){
  12.    perror(msg);
  13.    exit(1);
  14. }
  15. void base_start(char *ip,int port,int *my_socket,struct sockaddr_in *socket_addr,struct sockaddr_in *server_addr){
  16.    *my_socket=socket(AF_INET,SOCK_STREAM,0);
  17.    int opt=1;
  18.    setsockopt(*my_socket,SOL_SOCKET,SO_REUSEADDR,&opt,sizeof(opt));
  19.    if(*my_socket<0){
  20.       error("mysocket");
  21.    }
  22.    /*создали сокет клиента*/
  23.    socket_addr->sin_family=AF_INET;
  24.    socket_addr->sin_port=htons(1235);
  25.    socket_addr->sin_addr.s_addr=htons(INADDR_ANY);
  26.    /*заполнили структуру адреса*/
  27.    if(bind(*my_socket,(struct sockaddr*)socket_addr,sizeof(*socket_addr))<0){
  28.       error("bind");
  29.    }
  30.    /*привязали адресс к сокету*/
  31.    server_addr->sin_family=AF_INET;
  32.    server_addr->sin_port=htons(12345);
  33.    server_addr->sin_addr.s_addr=inet_addr(ip);
  34.    if(server_addr->sin_addr.s_addr<0)
  35.       error("addr");
  36. }
  37. void SendServer_char(char *buf,int my_socket,struct sockaddr_in *server_addr){
  38.    if(sendto(my_socket,buf,1,0,(struct sockaddr *)server_addr,sizeof(*server_addr))<0){
  39.       error("send");
  40.    }
  41.    
  42. }
  43. void handler(int s){
  44.    printw("+");
  45. }
  46. typedef struct{
  47.    char name[32];
  48.    char password[32];
  49. } User;
  50. int main(int argc,char *argv[]){
  51.    signal(SIGUSR1,handler);
  52.    initscr();
  53.    cbreak();
  54.    keypad(stdscr,1);
  55.    nodelay(stdscr,1);
  56.    User grisha={
  57.    "grisha",
  58.    "pasw",
  59.    };
  60.    struct sockaddr_in socket_addr,server_addr;
  61.    int my_socket;
  62.    base_start(argv[1],12345,&my_socket,&socket_addr,&server_addr);
  63.    socklen_t size=(socklen_t)sizeof(server_addr);
  64.    if(connect(my_socket,(struct sockaddr *)&server_addr,size)<0)
  65.       error("connect");
  66.    int res=write(my_socket,&grisha,sizeof(grisha));
  67. }
  68.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement