diff --git a/TMP/Practice/lecture23.10/server.c b/TMP/Practice/lecture23.10/server.c new file mode 100644 index 0000000..1c3596e --- /dev/null +++ b/TMP/Practice/lecture23.10/server.c @@ -0,0 +1,56 @@ +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#define SOCK_PATH "tpf_unix_sock.server" + +int main(void){ + int server_sock, rc; + socklen_t len; + int bytes_rec = 0; + struct sockaddr_un server_sockaddr, peer_sock; + char buf[256]; + memset(&server_sockaddr, 0, sizeof(struct sockaddr_un)); + memset(buf, 0, 256); + + server_sock = socket(AF_UNIX, SOCK_DGRAM, 0); + if (server_sock == -1){ + perror("socket"); + exit(1); + } + + server_sockaddr.sun_family = AF_UNIX; + strcpy(server_sockaddr.sun_path, SOCK_PATH); + len = sizeof(server_sockaddr); + unlink(SOCK_PATH); + rc = bind(server_sock, (struct sockaddr *) &server_sockaddr, len); + if (rc == -1){ + perror("bind"); + close(server_sock); + exit(1); + } + + + printf("waiting to recvfrom...\n"); + bytes_rec = recvfrom(server_sock, buf, 256, 0, (struct sockaddr *) &peer_sock, &len); + if (bytes_rec == -1){ + perror("recv"); + close(server_sock); + exit(1); + } + else { + printf("DATA RECEIVED = %s\n", buf); + } + + + close(server_sock); + + return 0; +} + diff --git a/TMP/Practice/lecture23.10/socket.c b/TMP/Practice/lecture23.10/socket.c new file mode 100644 index 0000000..bd6e4c2 --- /dev/null +++ b/TMP/Practice/lecture23.10/socket.c @@ -0,0 +1,64 @@ +#include +#include +#include +#include +#include +#include +#include +#include + +#define DATA "exit" + +int main(int argc, char *argv[]){ + int sock; + socklen_t length; + struct sockaddr_in server; + int msgsock; + char buf[1024]; + int rval; + sock = socket(AF_INET, SOCK_STREAM, 0); + if(sock == -1){ + perror("opening stream socket"); + exit(1); + } + server.sin_family = AF_INET; + server.sin_addr.s_addr = htoml(INADDR_ANY; + if(argc == 2){ + server.sin_port = htons(atoi(argv[1])); + } + else{ + server.sin_port = 0; + } + if(bind(sock, (struct sockaddr *) &server, sizeof server) == -1){ + perror("binding stream socket"); + exit(1); + } + length = sizeof server; + if(getsockname(sock,(struct sockaddr *) &server, &length) == -1){ + perror("getting socket name"); + exit(1); + } + printf("socket port %d\n", ntohs(server.sin_port)); + listen(sock, 5); + do{ + if((msgsock = accept(sock,(struct sockaddr *) NULL, (socklen_t *) NULL)) == -1){ + perror("accept"); + } + else + do{ + memset(buf,0,sizeof buf); + if((rval = read(msgsock, buf, 1024)) == -1) + perror("reading stream message"); + dprintf(1, "-[%d]\n", rval); + if(rval == 0){ + printf("connecting finished\n"); + } + else{ + dprintf(1,"[%s]\n", buf); + } + }while((rval > 0) && (strcmp(buf,FIN))); + close(msgsock); + + }while(strcmp(buf,FIN)); + exit(0); +}