// 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/
本文介绍了一个使用C语言实现的基本Socket服务器程序。该程序通过创建套接字、绑定地址信息、监听连接请求并接受客户端连接来演示如何搭建一个简单的TCP服务器。服务器能够获取客户端的IP地址和端口号,并向客户端发送一条预定义的消息。
1040

被折叠的 条评论
为什么被折叠?



