Presentation is loading. Please wait.

Presentation is loading. Please wait.

1 Vehicle Networking Networks Instruction 1 – Echo client/server in C Jeroen Voeten ES, 2012.

Similar presentations


Presentation on theme: "1 Vehicle Networking Networks Instruction 1 – Echo client/server in C Jeroen Voeten ES, 2012."— Presentation transcript:

1 1 Vehicle Networking Networks Instruction 1 – Echo client/server in C Jeroen Voeten ES, 2012

2 2 Assignment Building your own chat program in C++ –Bring your notebook! Download zip-file from: http://www.es.ele.tue.nl/~jvoeten/education/vehiclen etworking/exercises/exercises1/EchoClientServer_V CPP2010E.zip http://www.es.ele.tue.nl/~jvoeten/education/vehiclen etworking/exercises/exercises1/EchoClientServer_V CPP2010E.zip File contains example echo client and echo daemon based on TCP/IP protocol Change into UDP protocol and use it to build your own chat program 2

3 3 Reading material Strongly recommended http://www.es.ele.tue.nl/~heco/courses/Comp utation/WinSock2.ppthttp://www.es.ele.tue.nl/~heco/courses/Comp utation/WinSock2.ppt http://beej.us/guide/bgnet/output/print/bgn et_A4.pdf (pages 1-32)http://beej.us/guide/bgnet/output/print/bgn et_A4.pdf Background http://tangentsoft.net/wskfaq/ http://www.linuxhowtos.org/C_C++/socket.ht mhttp://www.linuxhowtos.org/C_C++/socket.ht m 3

4 4 Application (Internet Explorer Client) str2echo = ‘hello’ echo = ‘hello’ Client codeServer code sock = socket(SOCK_STREAM) bind(sock, client_address) connect(sock, server_address) send(sock, ‘hello’) receive(sock, echo) close(sock) sock = socket(SOCK_STREAM) bind(sock, server_address) accept(sock, client_address) receive(new_sock, str2echo) echo = str2echo send(sock, echo) close(sock) Streaming connections – echo Client/Server code new_sock: (IP address 2, New_Port) (IP address 1, Port 1) = client_address(IP address 2, Port 2) = server_address Application (Web Server) connect new_sock =

5 5 Datagram connections – echo Client/Server code sock = socket(SOCK_DGRAM) bind(sock, server_address) receive(sock, str2echo, client_address) echo = str2echo send(sock, echo, client_address) close(sock) Application (Internet Explorer Client) Application (Web Server) socket (IP address 1, Port 1) = client_address socket (IP address 2, Port 2) = server_address str2echo = ‘hello’ echo = ‘hello’ sock = socket(SOCK_DGRAM) bind(sock, client_address) send(sock, ‘hello’, server_address) receive(sock, echo, server_address) close(sock) Client codeServer code

6 6 Echod.c: from TCP to UDP int main(int argc, char* argv[]) { … server_address.sin_family = AF_INET; server_address.sin_addr.s_addr = INADDR_ANY; server_address.sin_port = htons(SERVER_PORT); memset(&(server_address.sin_zero),'\0', 8); s = socket(PF_INET, SOCK_STREAM, 0); if (s == INVALID_SOCKET) { printf("Socket creation failed\n"); exit(1); } if (bind(s, (struct sockaddr *)&server_address, sizeof(server_address)) == SOCKET_ERROR) { printf("Bind failed\n"); exit(1); } listen(s, MAX_PENDING); while (true) { len = sizeof(client_address); new_s = accept(s, (struct sockaddr *)&client_address, &len); if (new_s == INVALID_SOCKET) { printf("Accepting connection failed\n"); exit(1); } n=recv(new_s, buf, sizeof(buf), 0); send(new_s,buf,n,0); closesocket(new_s); } closesocket(s); WSACleanup(); return 0; } n=recvfrom(s, buf, sizeof(buf), 0, (struct sockaddr *)&client_address, &len); sendto(s,buf,n,0, (struct sockaddr *)&client_address, len); s = socket(PF_INET, SOCK_DGRAM, 0);

7 7 Echoc: from TCP to UDP int main(int argc, char* argv[]) { … server_address.sin_family = AF_INET; server_address.sin_addr = *((struct in_addr *)hp->h_addr); server_address.sin_port = htons(SERVER_PORT); memset(&(server_address.sin_zero),'\0',8); s = socket(PF_INET, SOCK_STREAM, 0); if (s == INVALID_SOCKET){ printf("Socket creation failed"); exit(1); } if (connect(s, (struct sockaddr *)&server_address, sizeof(server_address)) == SOCKET_ERROR) { printf("Connecting to server failed"); closesocket(s); exit(1); } n = strlen(buf); send(s,buf,n,0); n=recv(s, buf, sizeof(buf), 0); buf[n] = '\0'; printf("Echo generated by server %s:\n", inet_ntoa(server_address.sin_addr)); printf(buf); closesocket(s); WSACleanup(); return 0; } s = socket(PF_INET, SOCK_DGRAM, 0); sendto(s,buf,n,0, (struct sockaddr *)&server_address, len); n=recvfrom(s, buf, sizeof(buf), 0, (struct sockaddr *)&server_address, &len); len = sizeof(server_address);


Download ppt "1 Vehicle Networking Networks Instruction 1 – Echo client/server in C Jeroen Voeten ES, 2012."

Similar presentations


Ads by Google