#include #include #include #include #include #include #include #include int main(int argc,char** argv) { //usage if(argc != 3){ printf("Usage :\n\tx25client \n"); return -2; } int x25_socket; x25_socket = socket(PF_X25, SOCK_SEQPACKET, 0); if( x25_socket == -1){ printf("X25:create socket error (%d)\n",errno); return -1; } else printf("X25: socket created\n"); struct sockaddr_x25 addr; addr.sx25_family = AF_X25; strcpy(addr.sx25_addr.x25_addr,argv[1]); unsigned char qbit = 0; socklen_t opt_len = sizeof(qbit); if(getsockopt(x25_socket,SOL_X25,X25_QBITINCL,&qbit,&opt_len) == -1){ printf("X25: get socket option error (%d)(%s)\n",errno,strerror(errno)); // return -1; } else printf("X25: get socket option qbit = %u\n",qbit); struct x25_facilities facil; memset(&facil,0,sizeof(facil)); facil.pacsize_in = X25_PS1024; facil.pacsize_out = X25_PS1024; facil.winsize_in = 7; facil.winsize_out = 7; if(ioctl(x25_socket,SIOCX25SFACILITIES,&facil) == -1){ printf("X25: set socket facility error (%d)(%s)\n",errno,strerror(errno)); // return -1; } else printf("X25: set socket facility OK\n"); if(bind(x25_socket,(struct sockaddr*)&addr,sizeof(addr)) == -1){ printf("X25:bind socket error (%d)\n",errno); return -1; } else printf("X25: socket bind to %s\n",addr.sx25_addr.x25_addr); struct sockaddr_x25 to_addr; to_addr.sx25_family = AF_X25; strcpy(to_addr.sx25_addr.x25_addr,argv[2]); printf("X25: socket connecting to %s ...\n",to_addr.sx25_addr.x25_addr); if(connect(x25_socket,(struct sockaddr*)&to_addr,sizeof(to_addr)) == -1){ printf("X25: connect socket error (%d)(%s)\n",errno,strerror(errno)); return -1; } else printf("X25: socket connect to %s\n",to_addr.sx25_addr.x25_addr); char msg[64] = "Hello server !!!\0"; int nr; nr = write(x25_socket,msg,strlen(msg)+1); if(nr == -1){ printf("X25: send error (%d)(%s)\n",errno,strerror(errno)); return -1; } printf("X25: to server: '%s' (%d)\n",msg,nr); nr = read(x25_socket,msg,64);//,MSG_WAITALL); printf("X25: from server: %s (%d)\n",msg,nr); if(close(x25_socket) == -1)printf("X25: close socket (%d)\n",errno); else printf("X25: socket closed\n"); return 0; }