您的位置:首页 > 理论基础 > 计算机网络

TCP/IP socket programming in C(三)

2014-01-20 22:13 337 查看
// 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/
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: