【发布时间】:2014-10-01 12:21:24
【问题描述】:
我的网络服务器代码有问题
#include<netinet/in.h>
#include<stdio.h>
#include<stdlib.h>
#include<sys/socket.h>
#include<sys/stat.h>
#include<sys/types.h>
#include<unistd.h>
int main() {
int create_socket, new_socket;
socklen_t addrlen;
int bufsize = 1024;
char *buffer = malloc(bufsize);
struct sockaddr_in address;
if ((create_socket = socket(AF_INET, SOCK_STREAM, 0)) > 0){
printf("The socket was created\n");
}
address.sin_family = AF_INET;
address.sin_addr.s_addr = INADDR_ANY;
address.sin_port = htons(15000);
if (bind(create_socket, (struct sockaddr *) &address, sizeof(address)) == 0){
printf("Binding Socket\n");
}
while (1) {
if (listen(create_socket, 10) < 0) {
perror("server: listen");
exit(1);
}
if ((new_socket = accept(create_socket, (struct sockaddr *) &address, &addrlen)) < 0) {
perror("server: accept");
exit(1);
}
if (new_socket > 0){
printf("The Client is connected...\n");
}
recv(new_socket, buffer, bufsize, 0);
printf("%s\n", buffer);
write(new_socket, "hello world\n", 12);
close(new_socket);
}
close(create_socket);
return 0;
}
这是一个创建 Web 服务器的小代码,它在 15000 端口回复“hello wordl”。现在我希望我的服务器在请求(例如)“http://127.0.0.1:15000/luigi”时回复文本“luigi”,即“/”之后的短语。谢谢!
【问题讨论】:
-
有什么问题?问题是什么?
-
这段代码没问题!但我会在写例如“127.0.0.1:15000/start”时用 / 后面的短语回复。清楚了吗?
-
如果我写“127.0.0.1:15000/luigi”回复 luigi(在监视器上)。如果我写“127.0.0.1:15000/finish”回复完成(在监视器上)
-
在
write中写“127.0.0.1:15000....”有什么需要。你能告诉我吗? -
你为什么不使用像libonion这样的HTTP服务器库? HTTP 是一个实现起来相当复杂的协议!或者至少
strace一些 simple 网络服务器....
标签: c linux networking web