#include #include #include #include #include #include /* Internet domain header */ #include #include #include int main() { // create socket int soc = socket(AF_INET, SOCK_STREAM, 0); if (soc == -1) { perror("client: socket"); exit(1); } //initialize server address struct sockaddr_in server; server.sin_family = AF_INET; server.sin_port = htons(54321); memset(&server.sin_zero, 0, 8); struct addrinfo *ai; char * hostname = "teach.cs.toronto.edu"; /* this call declares memory and populates ailist */ getaddrinfo(hostname, NULL, NULL, &ai); server.sin_addr = ((struct sockaddr_in *) ai->ai_addr)->sin_addr; // free the memory that was allocated by getaddrinfo for this list freeaddrinfo(ai); int ret = connect(soc, (struct sockaddr *)&server, sizeof(struct sockaddr_in)); if (ret == -1) { perror("client: connect"); exit(1); } printf("Connect returned %d\n", ret); char buf[10]; read(soc, buf, 7); buf[7] = '\0'; printf("I read %s\n", buf); write(soc, "0123456789", 10); return 0; }