tag:blogger.com,1999:blog-37558390317234864472024-03-13T19:46:18.229-07:00Infotech DenInfotech Denhttp://www.blogger.com/profile/10668340117362356572noreply@blogger.comBlogger9125tag:blogger.com,1999:blog-3755839031723486447.post-51457453407689325792012-05-30T18:35:00.002-07:002012-05-30T18:35:39.096-07:00C: UDP Client / Server App Using SocketsSending/ Receiving data structure over TCP/IP<br />
<br />
Client:<br />
<br />
<br />
/* timecli.c */<br />
/* Gets the current time from a UDP server */<br />
/* Last modified: September 23, 2005 */<br />
/* http://www.gomorgan89.com */<br />
/* Link with library file wsock32.lib */<br />
<br />
#include <stdio.h></stdio.h><br />
#include <stdlib.h></stdlib.h><br />
#include <string.h></string.h><br />
#include <time.h></time.h><br />
//#include <winsock.h></winsock.h><br />
<br />
#include <windows.h></windows.h><br />
#include <winsock2.h></winsock2.h><br />
#include <ws2tcpip.h></ws2tcpip.h><br />
#include <stdio.h></stdio.h><br />
<br />
// Need to link with Ws2_32.lib<br />
#pragma comment(lib, "ws2_32.lib")<br />
<br />
<br />
#define SIZE 500<br />
<br />
struct packet {<br />
int x;<br />
int y;<br />
char arr[10];<br />
} __attribute__((packed));<br />
<br />
static void decode_packet (struct packet *recv_data, int recv_len);<br />
void usage(void);<br />
<br />
<br />
int main(int argc, char **argv)<br />
{<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>WSADATA w;<span class="Apple-tab-span" style="white-space: pre;"> </span>/* Used to open Windows connection */<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>unsigned short port_number;<span class="Apple-tab-span" style="white-space: pre;"> </span>/* The port number to use */<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>SOCKET sd;<span class="Apple-tab-span" style="white-space: pre;"> </span>/* The socket descriptor */<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>int server_length;<span class="Apple-tab-span" style="white-space: pre;"> </span>/* Length of server struct */<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>char send_buffer[SIZE] = "GET TIME\r\n";/* Data to send */<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>char receive_buffer[10]; /* Data to receive */<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>time_t current_time;<span class="Apple-tab-span" style="white-space: pre;"> </span>/* Time received */<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>struct hostent *hp;<span class="Apple-tab-span" style="white-space: pre;"> </span>/* Information about the server */<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>struct sockaddr_in server;<span class="Apple-tab-span" style="white-space: pre;"> </span>/* Information about the server */<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>struct sockaddr_in client;<span class="Apple-tab-span" style="white-space: pre;"> </span>/* Information about the client */<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>int a1, a2, a3, a4;<span class="Apple-tab-span" style="white-space: pre;"> </span>/* Server address components in xxx.xxx.xxx.xxx form */<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>int b1, b2, b3, b4;<span class="Apple-tab-span" style="white-space: pre;"> </span>/* Client address components in xxx.xxx.xxx.xxx form */<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>char host_name[256];<span class="Apple-tab-span" style="white-space: pre;"> </span>/* Host name of this computer */<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span><br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>int retSocket;<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span><br />
void* received_data;<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>int received_data_len;<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span><br />
<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>/* Make sure command line is correct */<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>if (argc != 3 && argc != 4)<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>{<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>usage();<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>}<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>if (sscanf(argv[1], "%d.%d.%d.%d", &a1, &a2, &a3, &a4) != 4)<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>{<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>usage();<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>}<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>if (sscanf(argv[2], "%u", &port_number) != 1)<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>{<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>usage();<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>}<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>if (argc == 4)<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>{<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>if (sscanf(argv[3], "%d.%d.%d.%d", &b1, &b2, &b3, &b4) != 4)<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>{<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>usage();<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>}<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>}<br />
<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>/* Open windows connection */<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>if (WSAStartup(0x0101, &w) != 0)<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>{<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>fprintf(stderr, "Could not open Windows connection.\n");<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>exit(0);<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>}<br />
<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>/* Open a datagram socket */<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>sd = socket(AF_INET, SOCK_DGRAM, 0);<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>if (sd == INVALID_SOCKET)<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>{<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>fprintf(stderr, "Could not create socket.\n");<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>WSACleanup();<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>exit(0);<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>}<br />
<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>/* Clear out server struct */<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>memset((void *)&server, '\0', sizeof(struct sockaddr_in));<br />
<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>/* Set family and port */<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>server.sin_family = AF_INET;<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>server.sin_port = htons(port_number);<br />
<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>/* Set server address */<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>server.sin_addr.S_un.S_un_b.s_b1 = (unsigned char)a1;<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>server.sin_addr.S_un.S_un_b.s_b2 = (unsigned char)a2;<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>server.sin_addr.S_un.S_un_b.s_b3 = (unsigned char)a3;<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>server.sin_addr.S_un.S_un_b.s_b4 = (unsigned char)a4;<br />
<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>/* Clear out client struct */<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>memset((void *)&client, '\0', sizeof(struct sockaddr_in));<br />
<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>/* Set family and port */<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>client.sin_family = AF_INET;<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>client.sin_port = htons(0);<br />
<br />
<br />
<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>if (argc == 3)<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>{<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>/* Get host name of this computer */<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>gethostname(host_name, sizeof(host_name));<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>hp = gethostbyname(host_name);<br />
<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>/* Check for NULL pointer */<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>if (hp == NULL)<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>{<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>fprintf(stderr, "Could not get host name.\n");<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>closesocket(sd);<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>WSACleanup();<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>exit(0);<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>}<br />
<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>/* Assign the address */<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>client.sin_addr.S_un.S_un_b.s_b1 = hp->h_addr_list[0][0];<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>client.sin_addr.S_un.S_un_b.s_b2 = hp->h_addr_list[0][1];<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>client.sin_addr.S_un.S_un_b.s_b3 = hp->h_addr_list[0][2];<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>client.sin_addr.S_un.S_un_b.s_b4 = hp->h_addr_list[0][3];<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>}<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>else<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>{<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>client.sin_addr.S_un.S_un_b.s_b1 = (unsigned char)b1;<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>client.sin_addr.S_un.S_un_b.s_b2 = (unsigned char)b2;<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>client.sin_addr.S_un.S_un_b.s_b3 = (unsigned char)b3;<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>client.sin_addr.S_un.S_un_b.s_b4 = (unsigned char)b4;<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>}<br />
<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>/* Bind local address to socket */<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>if (bind(sd, (struct sockaddr *)&client, sizeof(struct sockaddr_in)) == -1)<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>{<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>fprintf(stderr, "Cannot bind address to socket.\n");<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>closesocket(sd);<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>WSACleanup();<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>exit(0);<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>}<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span><br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>/* Print out client information */<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>printf("Client running on %u.%u.%u.%u\n", (unsigned char)client.sin_addr.S_un.S_un_b.s_b1,<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span> (unsigned char)client.sin_addr.S_un.S_un_b.s_b2,<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span> (unsigned char)client.sin_addr.S_un.S_un_b.s_b3,<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span> (unsigned char)client.sin_addr.S_un.S_un_b.s_b4);<br />
<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>/* Tranmsit data to get time */<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>server_length = sizeof(struct sockaddr_in);<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span><br />
<br />
<br />
<br />
<br />
while (1){<br />
<br />
retSocket = sendto(sd, send_buffer, (int)strlen(send_buffer) + 1, 0, (struct sockaddr *)&server, server_length);<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>if (retSocket == SOCKET_ERROR)<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>{<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>fprintf(stderr, "Error transmitting data.\n");<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>closesocket(sd);<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>WSACleanup();<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>exit(0);<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>}<br />
<br />
<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>/* Receive time */<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>struct packet p;<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span><br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>received_data = &p;<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>received_data_len = sizeof(p);<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span><br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>//recv(sd, (void*) &a, sizeof(a), 0);<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>retSocket = recvfrom(sd, (void*)received_data, received_data_len, 0, (struct sockaddr *)&server, &server_length);<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>//retSocket = recvfrom(sd, receive_buffer, (int)sizeof(receive_buffer) + 1, 0, (struct sockaddr *)&server, &server_length);<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>if (retSocket == SOCKET_ERROR)<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>{<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>fprintf(stderr, "Error receiving data.\n");<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>closesocket(sd);<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>WSACleanup();<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>exit(0);<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>}<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span><br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>decode_packet(received_data, received_data_len);<br />
<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>/* Display received data */<br />
//<span class="Apple-tab-span" style="white-space: pre;"> </span>printf("Received data: %d", ntoh(received_data->x));<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span><br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>Sleep(1000); // this will make the program pause for 1000 milliseconds<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>}<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span><br />
<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>closesocket(sd);<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>WSACleanup();<br />
<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>return 0;<br />
}<br />
<br />
static void decode_packet (struct packet *recv_data, int recv_len)<br />
{<br />
struct packet *recv_packet;<br />
char string[10];<br />
<br />
// check size<br />
if (recv_len < sizeof(struct packet)) {<br />
fprintf(stderr, "received too little!");<br />
return;<br />
} <br />
<br />
// make pointer<br />
recv_packet = (struct packet *)recv_data;<br />
<br />
<br />
// fix byte order<br />
int x = ntohl(recv_packet->x);<br />
int y = ntohl(recv_packet->y);<br />
string[0] = recv_packet->arr;<br />
<br />
strcpy(string, recv_packet->arr);<br />
<br />
printf("Decoded: %d %d %s", x, y, string);<br />
}<br />
<br />
void usage(void)<br />
{<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>fprintf(stderr, "Usage: timecli server_address port [client_address]\n");<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>exit(0);<br />
}<br />
<br />
<br />
<br />
<br />
<br />
<br />
Server<br />
<br />
<br />
<br />
/* timeserv.c */<br />
/* A simple UDP server that sends the current date and time to the client */<br />
/* Last modified: September 20, 2005 */<br />
/* http://www.gomorgan89.com */<br />
/* Link with library file wsock32.lib */<br />
<br />
#include <stdio.h></stdio.h><br />
#include <stdlib.h></stdlib.h><br />
#include <string.h></string.h><br />
#include <time.h></time.h><br />
<br />
#include <windows.h></windows.h><br />
#include <winsock2.h></winsock2.h><br />
#include <ws2tcpip.h></ws2tcpip.h><br />
<br />
// Need to link with Ws2_32.lib<br />
#pragma comment(lib, "ws2_32.lib")<br />
<br />
#define BUFFER_SIZE 20<br />
<br />
void usage(void);<br />
<br />
<br />
int main(int argc, char **argv)<br />
{<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>WSADATA w;<span class="Apple-tab-span" style="white-space: pre;"> </span>/* Used to open windows connection */<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>unsigned short port_number;<span class="Apple-tab-span" style="white-space: pre;"> </span>/* Port number to use */<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>int a1, a2, a3, a4;<span class="Apple-tab-span" style="white-space: pre;"> </span>/* Components of address in xxx.xxx.xxx.xxx form */<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>int client_length;<span class="Apple-tab-span" style="white-space: pre;"> </span>/* Length of client struct */<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>int bytes_received;<span class="Apple-tab-span" style="white-space: pre;"> </span>/* Bytes received from client */<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>SOCKET sd;<span class="Apple-tab-span" style="white-space: pre;"> </span>/* Socket descriptor of server */<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>struct sockaddr_in server;<span class="Apple-tab-span" style="white-space: pre;"> </span>/* Information about the server */<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>struct sockaddr_in client;<span class="Apple-tab-span" style="white-space: pre;"> </span>/* Information about the client */<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>char buffer[BUFFER_SIZE];<span class="Apple-tab-span" style="white-space: pre;"> </span>/* Where to store received data */<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>struct hostent *hp;<span class="Apple-tab-span" style="white-space: pre;"> </span>/* Information about this computer */<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>char host_name[256];<span class="Apple-tab-span" style="white-space: pre;"> </span>/* Name of the server */<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>time_t current_time;<span class="Apple-tab-span" style="white-space: pre;"> </span>/* Current time */<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>char send_buffer[10] = "HELLO\r\n"; /* Data to send */<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span><br />
struct packet {<br />
int x;<br />
int y;<br />
char arr[10];<br />
} __attribute__((packed));<br />
<br />
void* send_data;<br />
int send_data_len;<br />
<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>/* Interpret command line */<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>if (argc == 2)<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>{<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>/* Use local address */<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>if (sscanf(argv[1], "%u", &port_number) != 1)<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>{<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>usage();<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>}<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>}<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>else if (argc == 3)<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>{<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>/* Copy address */<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>if (sscanf(argv[1], "%d.%d.%d.%d", &a1, &a2, &a3, &a4) != 4)<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>{<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>usage();<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>}<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>if (sscanf(argv[2], "%u", &port_number) != 1)<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>{<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>usage();<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>}<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>}<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>else<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>{<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>usage();<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>}<br />
<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>/* Open windows connection */<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>if (WSAStartup(0x0101, &w) != 0)<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>{<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>fprintf(stderr, "Could not open Windows connection.\n");<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>exit(0);<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>}<br />
<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>/* Open a datagram socket */<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>sd = socket(AF_INET, SOCK_DGRAM, 0);<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>if (sd == INVALID_SOCKET)<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>{<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>fprintf(stderr, "Could not create socket.\n");<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>WSACleanup();<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>exit(0);<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>}<br />
<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>/* Clear out server struct */<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>memset((void *)&server, '\0', sizeof(struct sockaddr_in));<br />
<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>/* Set family and port */<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>server.sin_family = AF_INET;<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>server.sin_port = htons(port_number);<br />
<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>/* Set address automatically if desired */<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>if (argc == 2)<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>{<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>/* Get host name of this computer */<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>gethostname(host_name, sizeof(host_name));<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>hp = gethostbyname(host_name);<br />
<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>/* Check for NULL pointer */<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>if (hp == NULL)<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>{<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>fprintf(stderr, "Could not get host name.\n");<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>closesocket(sd);<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>WSACleanup();<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>exit(0);<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>}<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span><br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>/* Assign the address */<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>server.sin_addr.S_un.S_un_b.s_b1 = hp->h_addr_list[0][0];<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>server.sin_addr.S_un.S_un_b.s_b2 = hp->h_addr_list[0][1];<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>server.sin_addr.S_un.S_un_b.s_b3 = hp->h_addr_list[0][2];<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>server.sin_addr.S_un.S_un_b.s_b4 = hp->h_addr_list[0][3];<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>}<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>/* Otherwise assign it manually */<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>else<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>{<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>server.sin_addr.S_un.S_un_b.s_b1 = (unsigned char)a1;<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>server.sin_addr.S_un.S_un_b.s_b2 = (unsigned char)a2;<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>server.sin_addr.S_un.S_un_b.s_b3 = (unsigned char)a3;<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>server.sin_addr.S_un.S_un_b.s_b4 = (unsigned char)a4;<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>}<br />
<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>/* Bind address to socket */<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>if (bind(sd, (struct sockaddr *)&server, sizeof(struct sockaddr_in)) == -1)<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>{<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>fprintf(stderr, "Could not bind name to socket.\n");<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>closesocket(sd);<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>WSACleanup();<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>exit(0);<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>}<br />
<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>/* Print out server information */<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>printf("Server running on %u.%u.%u.%u\n", (unsigned char)server.sin_addr.S_un.S_un_b.s_b1,<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span> (unsigned char)server.sin_addr.S_un.S_un_b.s_b2,<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span> (unsigned char)server.sin_addr.S_un.S_un_b.s_b3,<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span> (unsigned char)server.sin_addr.S_un.S_un_b.s_b4);<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>printf("Press CTRL + C to quit\n");<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span><br />
<span class="Apple-tab-span" style="white-space: pre;"> </span><br />
<span class="Apple-tab-span" style="white-space: pre;"> </span><br />
<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span><br />
<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>/* Loop and get data from clients */<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>while (1)<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>{<br />
<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>client_length = (int)sizeof(struct sockaddr_in);<br />
<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>/* Receive bytes from client */<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span><br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>bytes_received = recvfrom(sd, buffer, BUFFER_SIZE, 0, (struct sockaddr *)&client, &client_length);<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>if (bytes_received < 0)<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>{<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>fprintf(stderr, "Could not receive datagram.\n");<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>closesocket(sd);<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>WSACleanup();<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>exit(0);<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>}<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span><br />
<span class="Apple-tab-span" style="white-space: pre;"> </span><br />
<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>/* Check for time request */<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>if (strcmp(buffer, "GET TIME\r\n") == 0)<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>{<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>/* Build packet */<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>struct packet p;<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>p.x = htonl(17);<br />
p.y = htonl(2924);<br />
memset(p.arr, '0', sizeof(p.arr));<br />
strcpy(p.arr, "hello");<br />
<br />
<br />
send_data = &p;<br />
send_data_len = sizeof(p);<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span><br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>/* Send data back */<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>if (sendto(sd, (void*)send_data, send_data_len, 0, (struct sockaddr *)&client, client_length) != (int)sizeof(p))<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>{<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>fprintf(stderr, "Error sending datagram.\n");<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>closesocket(sd);<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>WSACleanup();<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>exit(0);<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>}<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>}<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>}<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>closesocket(sd);<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>WSACleanup();<br />
<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>return 0;<br />
}<br />
<br />
void usage(void)<br />
{<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>fprintf(stderr, "timeserv [server_address] port\n");<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>exit(0);<br />
}<br />
<div>
<br /></div>
<br />Infotech Denhttp://www.blogger.com/profile/10668340117362356572noreply@blogger.com0tag:blogger.com,1999:blog-3755839031723486447.post-49954325318834012332011-09-04T00:29:00.000-07:002011-09-04T00:38:32.313-07:00TI's TMS570<a href="http://1.bp.blogspot.com/-iRFWjp-Y-Ss/TmMq8VnOJsI/AAAAAAAAACQ/4xbzHpJK5po/s1600/texasCapture1.JPG" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"><img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 386px; height: 400px;" src="http://1.bp.blogspot.com/-iRFWjp-Y-Ss/TmMq8VnOJsI/AAAAAAAAACQ/4xbzHpJK5po/s400/texasCapture1.JPG" border="0" alt="" id="BLOGGER_PHOTO_ID_5648405573734901442" /></a>
<br /><div>
<br /></div><div>
<br /></div><div>
<br /></div><a href="http://4.bp.blogspot.com/-W4y3cg0xfH0/TmMqrcVB6UI/AAAAAAAAACI/Dvk15Cw4MpU/s1600/Capture2.JPG" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"><img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 190px;" src="http://4.bp.blogspot.com/-W4y3cg0xfH0/TmMqrcVB6UI/AAAAAAAAACI/Dvk15Cw4MpU/s400/Capture2.JPG" border="0" alt="" id="BLOGGER_PHOTO_ID_5648405283479873858" /></a><div style="text-align: center;">
<br /></div><div style="text-align: center;">
<br /></div><div>
<br /></div>Infotech Denhttp://www.blogger.com/profile/10668340117362356572noreply@blogger.com0tag:blogger.com,1999:blog-3755839031723486447.post-57684998000956505792009-12-05T22:16:00.000-08:002009-12-05T22:17:45.340-08:00SELF-HELP: Being Right Isn't Most Important Thing when it Comes to Your Significant Other<div>by James Kent</div><div><br /></div><div>Many couples get into heated arguments with the only real purpose on being right, this is really the wrong approach. Remember that arguments are not really an effective communication method, but more two people making their point. The major purpose should be to maintain the harmony in the relationship rather than being right. In the heat of an argument its highly unlikely that the other person will be receptive to your point of view. Some research has even shown that when the heart is beating 100 times or more the other person will be physically unable to hear you. In my opinion the only real ways to end an argument on good terms are walk away, let down your viewpoint or find a way to change the argument into a calm discussion.</div><div><br /></div><div>Walking away will not initially be a popular decision by the other party, but stick to your guns and remember someone can only argue by themselves for so long. Letting go of your viewpoint is another excellent piece of advice its highly unlikely that your get the other person to see your point of view in the heat of an argument. If you are prepared to let go of your point of view it is likely that the argument will end. The final option is both the most effective and the hardest to achieve. The best way to attempt this without conceding your viewpoint is to use repair attempts. Make the other person aware that you understand their concerns and assure them we will discuss this when we are both calm. Another option is to turn away from anger and towards love, use affection and say something like “we do not need to do this now, just come and hug me”. </div>Infotech Denhttp://www.blogger.com/profile/10668340117362356572noreply@blogger.com0tag:blogger.com,1999:blog-3755839031723486447.post-85545091577135654222009-11-06T08:22:00.000-08:002011-07-05T09:16:43.749-07:00JAVA: Retrieving List of Blog Posts Using Blogger Data APIYou can use the Java Blogger Data API to display the list of blog entries.<div><br /></div><div>First you need to download the <a href="http://code.google.com/p/gdata-java-client/downloads/list">Java client library</a>. You'll find the classes you need to use in the <span class="Apple-style-span" style="font-style: italic; ">java/lib/gdata-core-1.0.jar<span class="Apple-style-span" style="font-style: normal; "> file.</span></span></div><div><br /></div><div>GData Java Client Library has the following external dependencies which you also need to add</div><div>1. <i>java/deps/google-collect-1.0-rc1.jar </i></div><div>2. <span class="Apple-style-span" style="font-style: italic; ">java/deps/jsr305.jar</span></div><div><br /></div><div>Finally, add the following sample code to display the list of blog entries.</div><pre class="prettyprint">import java.io.IOException;<br />import java.net.URL;<br />import java.util.LinkedList;<br /><br />import com.google.gdata.client.GoogleService;<br />import com.google.gdata.data.Entry;<br />import com.google.gdata.data.Feed;<br />import com.google.gdata.data.HtmlTextConstruct;<br />import com.google.gdata.data.TextContent;<br />import com.google.gdata.util.AuthenticationException;<br />import com.google.gdata.util.ServiceException;<br /><br /><br />public class Blogger {<br />public static void main(String[] args)<br />{<br />String username = "#@gmail.com";<br />String userpass = "#";<br />String feed ="http://www.blogger.com/feeds/#blogid/posts/default";<br /><br />try{<br /> URL feedUrl = new URL(feed);<br /> GoogleService myService = new GoogleService("blogger", "bprddd");<br /><br /> //Set up authentication (optional for beta Blogger, required for current Blogger):<br /> myService.setUserCredentials(username, userpass);<br /><br /> //Send the request and receive the response:<br /> Feed myFeed = myService.getFeed(feedUrl, Feed.class);<br /><br /> System.out.println(myFeed.getTitle().getPlainText());<br /> LinkedList<Entry> entries = (LinkedList<Entry>)myFeed.getEntries();<br /> int itemsPerPage = myFeed.getItemsPerPage();<br /><br /> Entry entry ;<br /> for(int i=0; i < itemsPerPage; i++){<br /> entry = (Entry)entries.get(i);<br /> System.out.println(entry.getId());<br /> System.out.println(entry.getTitle().getPlainText());<br /> System.out.println(entry.getPublished().toUiString());<br /> System.out.println(entry.getUpdated().toUiString());<br /> TextContent tc = (TextContent)entry.getContent();<br /> HtmlTextConstruct ptc = (HtmlTextConstruct)tc.getContent();<br /> System.out.println(ptc.getHtml());<br /> }<br />}<br />catch (AuthenticationException e) {<br /> e.printStackTrace();<br />}catch (ServiceException e) {<br /> e.printStackTrace();<br />}catch (IOException e) {<br /> e.printStackTrace();<br />}<br />}<br />}<br /><br /></pre>Infotech Denhttp://www.blogger.com/profile/10668340117362356572noreply@blogger.com0tag:blogger.com,1999:blog-3755839031723486447.post-20819588997226396712009-10-28T10:25:00.000-07:002009-11-09T07:18:07.169-08:00JAVA: Struts 2 on Google App EnginePrerequisite:<div>1. Eclipse IDE ver. 3.5</div><div>2. Googe App Engine Java SDK 1.2.5 and Google Plugin for Eclipse </div><div>2. Latest Release of Struts2 framework (note: used the the struts-2.1.8-lib.zip release)</div><div><br /></div><div>Procedure:</div><div><br /></div><div>1. Create a new <b>Web Application Project </b>in Eclipse.</div><div> 1.1. Go to File-New-Web Application Project</div><div> 1.2. Enter the Project name and Package. Uncheck the "Use Google Web Toolkit".</div><div><br /></div><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_dslaOn0aTMU/SuisNh3sIyI/AAAAAAAAAAc/3tRun8pCPA0/s1600-h/eclipse_project.JPG"><img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 281px; height: 320px;" src="http://1.bp.blogspot.com/_dslaOn0aTMU/SuisNh3sIyI/AAAAAAAAAAc/3tRun8pCPA0/s320/eclipse_project.JPG" border="0" alt="" id="BLOGGER_PHOTO_ID_5397753501833765666" /></a><div>2. Add the following <b>Struts2 libraries</b> to /WEB-INF/lib/. Also, add these libraries to Java Build path (Right click "Project Name"->"Build Path"->"Configure Build Path...". Go to "Libraries" tab and click "Add JARS.. button to add the needed libraries).</div><div><br /></div><div>commons-fileupload-1.2.1</div><div>commons-io-1.3.2</div><div>commons-logging-1.0.4</div><div>freemarker-2.3.15</div><div>ognl-2.7.3</div><div>struts2-core-2.1.8</div><div>xwork-core-2.1.6</div><div></div><div><br /></div><div><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_dslaOn0aTMU/Suis1Qro8iI/AAAAAAAAAAs/IFQHiUbARb0/s1600-h/eclipse_struts2libraries.JPG"><img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 236px; height: 400px;" src="http://4.bp.blogspot.com/_dslaOn0aTMU/Suis1Qro8iI/AAAAAAAAAAs/IFQHiUbARb0/s400/eclipse_struts2libraries.JPG" border="0" alt="" id="BLOGGER_PHOTO_ID_5397754184414589474" /></a><br /><div style="text-align: center;"><span class="Apple-style-span" style="color:#0000EE;"><span class="Apple-style-span" style="text-decoration: underline;"><br /></span></span></div></div><div><br /></div><div>3. Modify the auto-generated <b>appengine-web.xml </b>(to enable the sessions and ssl)<b>.</b></div><div><b><br /></b></div><div><br /><pre class="prettyprint"><br /><appengine-web-app xmlns="http://appengine.google.com/ns/1.0"><br /><application></application><br /><version>1</version><br /><br /><!-- Configure java.util.logging --><br /><system-properties><br /><property name="java.util.logging.config.file" value="WEB-INF/logging.properties"><br /></property></system-properties><br /><br /><sessions-enabled>true</sessions-enabled><br /><ssl-enabled>true</ssl-enabled><br /><br /></appengine-web-app><br /><br /></pre></div><div><br /></div><div><br /></div><div>4. Modify the <b>web.xml</b>.<div><br /></div><div><br /><pre class="prettyprint"><br /><web-app xsi="http://www.w3.org/2001/XMLSchema-instance"<br />xmlns="http://java.sun.com/xml/ns/javaee"<br />web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"<br />schemalocation="http://java.sun.com/xml/ns/javaee<br />http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" version="2.5"><br /><filter><br /><filter-name>struts2</filter-name><br /><filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class><br /><init-param><br /><param-name>actionPackages</param-name><br /><param-value>net.gae.struts2den.action</param-value><br /></init-param><br /></filter><br /><br /><filter-mapping><br /><filter-name>struts2</filter-name><br /><url-pattern>/*</url-pattern><br /></filter-mapping><br /><br /><listener><br /><listener-class>net.gae.struts2den.common.InitListener</listener-class><br /></listener><br /><br /><welcome-file-list><br /><welcome-file>index.html</welcome-file><br /></welcome-file-list><br /><br /></web-app><br /></pre><br /><br /></div><br /><br />5. Set the <b>OgnlRuntime Security Manager</b>.<div>Note that if you run the application after doing procedure 4, you will get OgnlException. To resolve this , implement an ServletContextListener which will set OGNL security manager to null when the context is initialized.</div><div><br /></div><div><pre class="prettyprint">package net.gae.struts2den.common;<br /><br />import javax.servlet.ServletContextEvent;<br />import javax.servlet.ServletContextListener;<br />import javax.servlet.http.HttpSessionAttributeListener;<br />import javax.servlet.http.HttpSessionBindingEvent;<br />import javax.servlet.http.HttpSessionEvent;<br />import javax.servlet.http.HttpSessionListener;<br /><br />import ognl.OgnlRuntime;<br /><br />public class InitListener implements ServletContextListener,<br />HttpSessionListener, HttpSessionAttributeListener {<br /><br />public void contextInitialized(ServletContextEvent sce) {<br />OgnlRuntime.setSecurityManager(null);<br />}<br /><br />@Override<br />public void contextDestroyed(ServletContextEvent arg0) {<br />// TODO Auto-generated method stub<br /><br />}<br /><br />@Override<br />public void sessionCreated(HttpSessionEvent arg0) {<br />// TODO Auto-generated method stub<br /><br />}<br /><br />@Override<br />public void sessionDestroyed(HttpSessionEvent arg0) {<br />// TODO Auto-generated method stub<br /><br />}<br /><br />@Override<br />public void attributeAdded(HttpSessionBindingEvent arg0) {<br />// TODO Auto-generated method stub<br /><br />}<br /><br />@Override<br />public void attributeRemoved(HttpSessionBindingEvent arg0) {<br />// TODO Auto-generated method stub<br /><br />}<br /><br />@Override<br />public void attributeReplaced(HttpSessionBindingEvent arg0) {<br />// TODO Auto-generated method stub<br /><br />}<br /><br />} </pre><br /></div><div>Note: in web.xml (of procedure 4 ), an entry for InitListener is already implemented as </div><div><br /><pre class="prettyprint"><br /><listener><br /><listener-class>net.gae.struts2den.common.InitListener</listener-class><br /></listener><br /></pre><br /></div><div><br /></div></div><br /><br />6. Create <b>struts.xml</b> in src folder<br /><div><br /><pre class="prettyprint"><br /><struts><br /><br /><constant name="struts.ui.theme" value="simple"><br /><br /><package name="helloworld" namespace="/helloworld" extends="struts-default"><br /><global-results><br /> <result name="failed">/WEB-INF/jsp/myapp1/failed.jsp<br /> </result><br /></global-results><br /><br /><!-- http://localhost:8080/helloworld/HelloWorld.action --><br /><action name="HelloWorld" class="net.gae.struts2den.action.HelloWorld"><br /> <result>/WEB-INF/jsp/helloworld.jsp</result><br /></action><br /></package><br /><br /></constant></struts><br /></pre></div><br /><br />7. Create the <b>HelloWorld action</b> (net/gae/struts2den/action/HelloWorld.java)<pre class="prettyprint"><br />package net.gae.struts2den.action;<br />import com.opensymphony.xwork2.ActionSupport;<br /><br />@SuppressWarnings("serial")<br />public class HelloWorld extends ActionSupport {<br /><br />public static final String MESSAGE = "Struts is up and running ...";<br /><br />public String execute() throws Exception {<br />setMessage(MESSAGE);<br />return SUCCESS;<br />}<br /><br />private String message;<br /><br />public void setMessage(String message){<br />this.message = message;<br />}<br /><br />public String getMessage() {<br />return message;<br />}<br />}</pre><br />8. Create the<b> helloworld.jsp</b> (WEB-INF/jsp/helloworld.jsp)<div><br /></div><br /><pre class="prettyprint"><br /><h2><s:property value="message"></s:property></h2><br /></pre><br /><br />9. <b>Run the application</b> and open <span class="nobr"><a href="http://localhost:8080/helloworld/HelloWorld.action" title="Visit page outside Confluence" rel="nofollow">http://localhost:8080/helloworld/HelloWorld.action</a> and see what happens!</span><div><br /></div><br /><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_dslaOn0aTMU/Suir6oYGfyI/AAAAAAAAAAU/rgBLujzueag/s1600-h/helloworld.JPG"><img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 220px;" src="http://3.bp.blogspot.com/_dslaOn0aTMU/Suir6oYGfyI/AAAAAAAAAAU/rgBLujzueag/s320/helloworld.JPG" border="0" alt="" id="BLOGGER_PHOTO_ID_5397753177162809122" /></a><br />sample application at: <a href="http://www.struts2den.appspot.com/">http://www.struts2den.appspot.com/</a><div><br /></div><div><br /></div>Infotech Denhttp://www.blogger.com/profile/10668340117362356572noreply@blogger.com3tag:blogger.com,1999:blog-3755839031723486447.post-13513115125816165462008-11-24T03:05:00.000-08:002008-11-24T03:58:44.446-08:00PHOTOGRAPHY: Photography Sites1. <a href="http://pixel-peeper.com/">http://pixel-peeper.com/</a><br /> - You can view sample pictures from a specific lens or camera based on a specific setting (e.g. aperture, focal length or ISO).<br /><br />2. <a href="http://www.dslrtips.com/workshops/DSLR_workshops_tutorials_tips.shtml">http://www.dslrtips.com/workshops/DSLR_workshops_tutorials_tips.shtml</a><br /> - You get DSLR tips with accompanying videos.Infotech Denhttp://www.blogger.com/profile/10668340117362356572noreply@blogger.com0tag:blogger.com,1999:blog-3755839031723486447.post-2573591883625962892008-11-15T08:20:00.000-08:002009-11-10T16:13:05.213-08:00BLOGGING: How to add your blogsite to search enginesTo increase the traffic/exposure of your blogsite, you need to add it on search engines. Three of the most popular search engines worldwide are<br /><br />1. Google<br />2. Yahoo<br />3. MSN<br /><br />To add your blogsite to Google, go <a href="http://www.google.com/addurl/?continue=/addurl">here</a>.<br /><br />To submit your blogsite to Yahoo, go <a href="http://siteexplorer.search.yahoo.com/submit">here</a>.<br /><br />To send your blogsite's url address to MSN Live Search, go <a href="http://search.msn.co.uk/docs/submit.aspx">here</a>.<div><br /></div><div>There is also a website which allows you to submit your blogsite URL to more than 20+ search engines, including Google. You can go to<a href="http://www.submitexpress.com/submit.html"> www.submitexpress.com</a> for free website submission.</div><div><br /><br /><div class="tag_list">Tags: <span class="tags"><a href="http://technorati.com/tag/add+blog+to+search+engine" rel="tag">add blog to search engine</a>, <a href="http://technorati.com/tag/google" rel="tag">google</a>, <a href="http://technorati.com/tag/yahoo" rel="tag">yahoo</a>, <a href="http://technorati.com/tag/msn" rel="tag">msn</a></span></div></div>Infotech Denhttp://www.blogger.com/profile/10668340117362356572noreply@blogger.com0tag:blogger.com,1999:blog-3755839031723486447.post-90191340896039757152008-11-14T21:16:00.000-08:002009-11-09T07:24:49.791-08:00BLOGGING: How to post code snippets in BloggerThe better way to post code snippets in Blogger is by using the SyntaxHighlighter. It is a 100% Javascript based-program that allows you to insert syntax highlighted code in your blog.<br /><br />The following procedures help you to setup the SyntaxHighlighter in your Blogger.<br />1. Download the <a href="http://code.google.com/p/syntaxhighlighter/downloads/list">SyntaxHighlighter</a>.<br />2. Upload the SyntaxHighlighter's files to any host or website which ca be linked from your blog. (see Note 1)<br />3. Login to your blogger account, go to "Dashboard" - "Layout" - "Edit HTML".<br />4. Edit the contents of your template by adding the following code at bottom of the page, just before the <tt></body></tt> tag.<br /><br /><pre class="prettyprint"><br /><link href='http://YOUR_HOST_URL/SyntaxHighlighter.css' rel='stylesheet' type='text/css'/><br /><script language='javascript' src='http://YOUR_HOST_URL/shCore.js'/><br /><script language='javascript' src='http://YOUR_HOST_URL/shBrushJava.js'/> <br /><script language='javascript'><br />dp.SyntaxHighlighter.BloggerMode();<br />dp.SyntaxHighlighter.HighlightAll('code');<br /></script><br /></pre><br /><br />5. Save the template.<br />6. Now you can start using it in your posts. Go to "Posting", create or edit a post in "Edit Html" mode. Place your code snippets between <tt><pre></tt> and <tt></pre></tt> tags as shown below (See Note 2).<br /><br /><pre class="prettyprint"><br /><pre name="code" class="js"><br />--your code here---<br /></pre><br /></pre><br /><br />Notes:<br />1. It is not really needed to upload the files to a server as the SyntaxHighlighter is already hosted by <a href="http://code.google.com/">Google Code</a>. I got it done for my blog using the following code:<br /><br /><pre class="prettyprint"><br /><br /><link href='http://1561834568390153680-a-1802744773732722657-s-sites.googlegroups.com/site/<br />infotechden/syntaxhighlighter/SyntaxHighlighter.css' rel='stylesheet' type='text/css'/><br /><script language='javascript' src='http://syntaxhighlighter.googlecode.com/svn-history/r92/trunk/Scripts/shCore.js'/><br /><script language='javascript' src='http://syntaxhighlighter.googlecode.com/svn-history/r92/trunk/Scripts/shBrushBash.js'/><br /><script language='javascript' src='http://syntaxhighlighter.googlecode.com/svn-history/r92/trunk/Scripts/shBrushCpp.js'/><br /><script language='javascript' src='http://syntaxhighlighter.googlecode.com/svn-history/r92/trunk/Scripts/shBrushCss.js'/><br /><script language='javascript' src='http://syntaxhighlighter.googlecode.com/svn-history/r92/trunk/Scripts/shBrushJScript.js'/><br /><script language='javascript' src='http://syntaxhighlighter.googlecode.com/svn-history/r92/trunk/Scripts/shBrushJava.js'/><br /><script language='javascript' src='http://syntaxhighlighter.googlecode.com/svn-history/r92/trunk/Scripts/shBrushXml.js'/><br /><br /><script language='javascript'><br />dp.SyntaxHighlighter.BloggerMode();<br />dp.SyntaxHighlighter.HighlightAll('code');<br /></script><br /></pre><br /><br />As you can see, I used all the files hosted by Google Code except for SyntaxHighlighter.css file. The "hosted" CSS file is different from the "downloaded" CSS file and will produce a different output, so it is advisable to use the "downloaded" CSS file.<br /><br />2. When placing a code snippet, the opening triangular bracket <tt><</tt> must be replaced with an HTML equivalent of <tt>&lt;</tt> in all cases. Failure to do won't break the page, but might break the source code displayed. <div><br /></div><div>Related blog posts:</div><div>1. <a href="http://patrickwebster.blogspot.com/2009/02/syntaxhighlighter-in-blogger.html">http://patrickwebster.blogspot.com/2009/02/syntaxhighlighter-in-blogger.html</a><br /><br /><div class="tag_list">Tags: <span class="tags"><a href="http://technorati.com/tag/syntaxhighlighter" rel="tag">syntaxhighlighter</a>, <a href="http://technorati.com/tag/source+code+in+blog" rel="tag">source code in blog</a></span></div></div>Infotech Denhttp://www.blogger.com/profile/10668340117362356572noreply@blogger.com0tag:blogger.com,1999:blog-3755839031723486447.post-76778403605389346832008-11-14T20:53:00.000-08:002008-11-14T20:54:03.196-08:00My first blogprintf("Hello World");Infotech Denhttp://www.blogger.com/profile/10668340117362356572noreply@blogger.com0