Commit a753ec27 authored by Bhavesh Yadav's avatar Bhavesh Yadav

Added RPC with socket number

parent ab44ef0b
#include"llist.h" #include"llist.h"
#include <netinet/in.h>
#include <arpa/inet.h>
list *mk_list(char *data, int key, color c) list *mk_list(char *data, int key, color c)
{ {
list *lst; list *lst;
...@@ -24,11 +27,27 @@ int main(int argc, char *argv[]) ...@@ -24,11 +27,27 @@ int main(int argc, char *argv[])
new = mk_list("one", 1, ORANGE); new = mk_list("one", 1, ORANGE);
new->next = l; new->next = l;
l = new; l = new;
cl = clnt_create(argv[1], PRINTER, PRINTER_V1, "tcp"); int sock_fd;
struct sockaddr_in *socketAddr = malloc(sizeof(struct sockaddr_in));
if( (sock_fd = socket(AF_INET , SOCK_STREAM , 0)) == 0) {
// printf("%s",toRespXML("Network Error: Could not create socket"));
exit(1);
}
socketAddr->sin_family = AF_INET;
socketAddr->sin_addr.s_addr = INADDR_ANY;
socketAddr->sin_port = htons(atoi(argv[1]));
memset((socketAddr->sin_zero), '\0', 8);
puts("sock");
int* sock = malloc(10);
*sock = RPC_ANYSOCK;
cl = clnttcp_create(socketAddr, PRINTER, PRINTER_V1,sock,1000,1000);
if (cl == NULL) { if (cl == NULL) {
printf("error: could not connect to server.\n"); printf("error: could not connect to server.\n");
return 1; return 1;
} }
puts("sock");
result = print_list_1(l, cl); result = print_list_1(l, cl);
if (result == NULL) { if (result == NULL) {
printf("error: RPC failed!\n"); printf("error: RPC failed!\n");
......
...@@ -11,6 +11,7 @@ ...@@ -11,6 +11,7 @@
#include <memory.h> #include <memory.h>
#include <sys/socket.h> #include <sys/socket.h>
#include <netinet/in.h> #include <netinet/in.h>
#include <arpa/inet.h>
#ifndef SIG_PF #ifndef SIG_PF
#define SIG_PF void(*)(int) #define SIG_PF void(*)(int)
...@@ -71,17 +72,34 @@ main (int argc, char **argv) ...@@ -71,17 +72,34 @@ main (int argc, char **argv)
pmap_unset (PRINTER, PRINTER_V1); pmap_unset (PRINTER, PRINTER_V1);
transp = svcudp_create(RPC_ANYSOCK); // transp = svcudp_create(RPC_ANYSOCK);
if (transp == NULL) { // if (transp == NULL) {
fprintf (stderr, "%s", "cannot create udp service."); // fprintf (stderr, "%s", "cannot create udp service.");
exit(1); // exit(1);
} // }
if (!svc_register(transp, PRINTER, PRINTER_V1, printer_1, IPPROTO_UDP)) { // if (!svc_register(transp, PRINTER, PRINTER_V1, printer_1, IPPROTO_UDP)) {
fprintf (stderr, "%s", "unable to register (PRINTER, PRINTER_V1, udp)."); // fprintf (stderr, "%s", "unable to register (PRINTER, PRINTER_V1, udp).");
exit(1); // exit(1);
} // }ma
int sock_fd, addrlen;
struct sockaddr_in socketAddr;
if( (sock_fd = socket(AF_INET , SOCK_STREAM , 0)) == 0) {
// printf("%s",toRespXML("Network Error: Could not create socket"));
exit(1);
}
transp = svctcp_create(RPC_ANYSOCK, 0, 0); socketAddr.sin_family = AF_INET;
socketAddr.sin_addr.s_addr = INADDR_ANY;
socketAddr.sin_port = htons(atoi(argv[1]));
memset(&(socketAddr.sin_zero), '\0', 8);
addrlen = sizeof(struct sockaddr_in);
if (bind(sock_fd, (struct sockaddr *)&socketAddr, addrlen)<0){
perror("bind failed");
exit(1);
}
transp = svctcp_create(sock_fd, 0, 0);
if (transp == NULL) { if (transp == NULL) {
fprintf (stderr, "%s", "cannot create tcp service."); fprintf (stderr, "%s", "cannot create tcp service.");
exit(1); exit(1);
...@@ -90,7 +108,9 @@ main (int argc, char **argv) ...@@ -90,7 +108,9 @@ main (int argc, char **argv)
fprintf (stderr, "%s", "unable to register (PRINTER, PRINTER_V1, tcp)."); fprintf (stderr, "%s", "unable to register (PRINTER, PRINTER_V1, tcp).");
exit(1); exit(1);
} }
char* message = malloc(1000);
sprintf(message,"%d",transp->xp_port);
puts(message);
svc_run (); svc_run ();
fprintf (stderr, "%s", "svc_run returned"); fprintf (stderr, "%s", "svc_run returned");
exit (1); exit (1);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment