TCP/IP socket programming in C(三)

来源:互联网 发布:tcp端口是什么 编辑:程序博客网 时间:2024/05/17 01:16
// server.c#include <errno.h> #include <stdio.h> #include <stdlib.h>#include <string.h>#include <fcntl.h>#include <unistd.h>#include <sys/socket.h>#include <netdb.h>int main(int argc, char *argv[]){        int socket_desc, new_socket, c;        struct sockaddr_in server, client;        char *message;        char *client_ip;        int client_port;        // Create socket        socket_desc = socket(AF_INET, SOCK_STREAM, 0);        if (socket_desc == -1) {                printf("Could not create socket\n");        }        // Prepare the sockaddr_in structure        server.sin_family = AF_INET;        server.sin_addr.s_addr = INADDR_ANY;        server.sin_port = htons(8888);        // Bind        if (bind(socket_desc, (struct sockaddr *)&server, sizeof(server)) < 0) {                puts("bind failed");        }        puts("bind done");        // Listen        listen(socket_desc, 3);        // Accept and incoming connection        puts("Waiting for incoming connections ...");        c = sizeof(struct sockaddr_in);        while (new_socket = accept(socket_desc, (struct sockaddr *)&client, (socklen_t *)&c)) {                puts("Connection accepted");                // Get the ip address and the port number of connected client                client_ip = inet_ntoa(client.sin_addr);                client_port = ntohs(client.sin_port);                printf("Connected client ip : %s\n", client_ip);                printf("                 port : %d\n", client_port);                // Reply to the client                message = "Hello Client, I have received your connection. But I have to go now, bye.\n";                write(new_socket, message, strlen(message));        }        if (new_socket < 0) {                perror("accept failed");                return 1;        }        return 0;}


原文:http://www.binarytides.com/socket-programming-c-linux-tutorial/

0 0