Cap0 Posted June 17, 2007 Posted June 17, 2007 This C code: AU3_PLUGIN_DEFINE(Socket_Connect) { char del[] = "."; AU3_PLUGIN_VAR *a_sock; SOCKADDR_IN Sock; char szIP; char tok1; //char tok2; int szPORT; int IsCon; int cur_socket; int a1,a2,a3,a4; cur_socket = AU3_GetInt32(&p_AU3_Params[0]); szIP = AU3_GetString(&p_AU3_Params[1]); szPORT = AU3_GetInt32(&p_AU3_Params[2]); a1 = strtok(szIP,"."); a2 = strtok(NULL,"."); a3 = strtok(NULL,"."); a4 = strtok(NULL,"."); Sock.sin_addr.S_un.S_un_b.s_b1 = a1; Sock.sin_addr.S_un.S_un_b.s_b2 = a2; Sock.sin_addr.S_un.S_un_b.s_b3 = a3; Sock.sin_addr.S_un.S_un_b.s_b4 = a4; Sock.sin_port = szPORT; Sock.sin_family = AF_INET; IsCon = connect(cur_socket,(SOCKADDR *)(&Sock),sizeof(Sock)); AU3_FreeString(szIP); a_sock = AU3_AllocVar(); AU3_SetInt32(a_sock,IsCon); *p_AU3_Result = a_sock; *n_AU3_ErrorCode = 0; *n_AU3_ExtCode = 0; return AU3_PLUGIN_OK; } This part: a1 = strtok(szIP,"."); a2 = strtok(NULL,"."); a3 = strtok(NULL,"."); a4 = strtok(NULL,"."); Sock.sin_addr.S_un.S_un_b.s_b1 = a1; Sock.sin_addr.S_un.S_un_b.s_b2 = a2; Sock.sin_addr.S_un.S_un_b.s_b3 = a3; Sock.sin_addr.S_un.S_un_b.s_b4 = a4; makes autoit crash when using Socket_Connect().. i'm doing something wrong here... any help?
Richard Robertson Posted June 17, 2007 Posted June 17, 2007 How do you know that is where it crashes? strtok, is it made to accept null pointers? I can't imagine it would, but I don't have any documentation available right now.
Cap0 Posted June 18, 2007 Author Posted June 18, 2007 Hi,when i comment out those functions, it doesn't crash.i used this:$in = InitWSA();another part of the plugin... $f = CreateSocket();another part of the plugin... $c = Socket_Connect($f,"127.0.0.1",1000) msgbox(0,'',"InitWSA: " & $in & @CRLF & "CreateSocket: " & $f & @CRLF & "Socket_Connect: " & $c)Here's an exmple code of strtok:expandcollapse popup/***************************************************************** * * Purpose: Program to demonstrate the 'strtok' function. * Author: M J Leslie * Date: 23-Apr-94 * ****************************************************************/ #include <stdio.h> #include <string.h> main() { /* Copy the constant into the memory * pinted to by 'test_string' */ char test_string[50]="string to split up"; /* if 'test_string' is declared as below and the program will give a * 'Segmentation fault' This is because test_string' is pointing * to a constant i.e. somethin that cant be changed. char *test_string="string to split up"; */ char *sub_string; /* Extract first string */ printf("%s\n", strtok(test_string, " ")); /* Extract remaining * strings */ while ( (sub_string=strtok(NULL, " ")) != NULL) { printf("%s\n", sub_string); } } /***************************************************************** * * Program O/P will look like this... * * string * to * split * up * *****************************************************************/from: strtok.c
Cap0 Posted June 18, 2007 Author Posted June 18, 2007 Nevermind, solved using: Sock.sin_addr.S_un.S_addr = inet_addr(szIP); instead of tokenizing...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now