#include #include #include #include #include #include #include #include "easysock.h" #include "url_manipulation.h" void testFunc(Widget,XtPointer,XmPushButtonCallbackStruct *); int main(int argc,char** argv) { Widget window,top_wid,search_bar,search,result; XtAppContext app; top_wid = XtVaAppInitialize(&app, "Web Browser", NULL,0,&argc,argv,NULL,NULL); window = XtVaCreateManagedWidget("Main Window", xmFormWidgetClass, top_wid, NULL); search = XtVaCreateManagedWidget("Search", xmPushButtonWidgetClass, window, XmNtopAttachment,XmATTACH_FORM, XmNrightAttachment,XmATTACH_FORM, NULL); search_bar = XtVaCreateManagedWidget("Search Bar", xmTextFieldWidgetClass, window, XmNleftAttachment,XmATTACH_FORM, XmNtopAttachment,XmATTACH_FORM, XmNrightAttachment,XmATTACH_WIDGET,XmNrightWidget,search,NULL); result = XtVaCreateManagedWidget("HTML Result", xmHTMLWidgetClass, window, XmNbottomAttachment,XmATTACH_FORM, XmNrightAttachment,XmATTACH_FORM, XmNleftAttachment,XmATTACH_FORM, XmNtopAttachment,XmATTACH_WIDGET,XmNtopWidget,search_bar,NULL); int val = 5; Widget widget_array[] = {search_bar,result}; XtAddCallback(search,XmNactivateCallback,testFunc,widget_array); XtRealizeWidget(top_wid); XtAppMainLoop(app); } void testFunc(Widget w, XtPointer client_data, XmPushButtonCallbackStruct *callback_struct) { Widget* widget_list = (Widget *)client_data; Widget result_widget = widget_list[1]; Widget text_widget = widget_list[0]; int port; char* url = XmTextFieldGetString(text_widget); char* protocol = url_to_proto(url); /* Extract the protocol string from the URL input */ if (strcmp(protocol,"http") == 0) { port = 80; } else if (strcmp(protocol,"https") == 0) { port = 443; } else { exit(50); /* I haven't added support for other protocols yet */ } /* We call the create_remote function to create an address, bind it to a socket, and make the connection for us. It returns the socket, so that the HTTP request can be made. First parameter is IP version - set to -1 because we don't know yet if the address is IPv4 or IPv6. */ char* request = "GET /~fdc/sample.html HTTP/1.1\nHost: www.columbia.edu\n\n" char* response = malloc(sizeof(char) * 5000); struct sockaddr* address_struct; int remote_socket = create_remote(-1,'T',url_to_hostname(url),port,address_struct); send(remote_socket,request,strlen(request),0); recv(remote_socket,response,sizeof(response),0); XmHTMLTextSetString(result_widget,response); // printf("%d\n",val); // exit(2); }