QQ登录

只需一步,快速开始

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 620|回复: 0

tcp socket服务器的编写问题

[复制链接]
发表于 2003-9-25 14:39:56 | 显示全部楼层 |阅读模式
我已经写了server的程序,能开一个端口1234,并且连接成功。
但是我不知道怎么样能简单地分析出http 请求的包,我将请求都放在
buf中,请各我帮我出点子把method=GET,HTTP version=1.0等写出来。
源代码如下:
/*tcp server sample*/
#include <stdio.h> /*There are the usual header files*/
#include <string.h>/*for bzero()*/
#include <unistd.h> /*for close()*/
#include &lt;sys/types.h&gt;
#include &lt;sys/socket.h&gt;
#include &lt;netinet/in.h&gt;
#include &lt;arpa/inet.h&gt;
#include &lt;fcntl.h&gt;
#include &lt;sys/stat.h&gt;

#define PORT 1234 /*Port that will be opened*/
#define BACKLOG 1 /*Number of allowed connections*/

main()
{
int listenfd,connectfd; /*socket descriptors*/
struct sockaddr_in server; /*server's address information*/
struct sockaddr_in client; /*client's address information*/
int sin_size;
int n;


char buf[8192];

/*Create a TCP socket*/
if((listenfd=socket(AF_INET,SOCK_STREAM,0))==-1)
{
/*handle exception*/
perror("Creating socket failed.");
exit(1);
}

/*set socket can be used*/
int opt=SO_REUSEADDR;
setsockopt(listenfd,SOL_SOCKET,SO_REUSEADDR,&amp;opt,sizeof(opt));

bzero(&amp;server,sizeof(server)); /*fill server with 0s*/
server.sin_family=AF_INET;
server.sin_port=htons(PORT);
server.sin_addr.s_addr=htonl(INADDR_ANY);
if(bind(listenfd,(struct sockaddr *)&amp;server,sizeof(struct sockaddr))==-1){
/*handle exception*/
perror("Bind error.");
exit(1);
}

if(listen(listenfd,BACKLOG)==-1){/*calls listen()*/
perror("listen() error\n");
exit(1);
}

sin_size=sizeof(struct sockaddr_in);
if((connectfd=accept(listenfd,(struct sockaddr *)&amp;client,&amp;sin_size))==-1){
/*calls accept()*/
perror("accept() error\n");
exit(1);
}

/*printf client's IP*/
printf("You got a connetion from %s\n",inet_ntoa(client.sin_addr));
/*send to the client welcome message*/
send(connectfd,"Welcome to my server.\n",22,0);

read(connectfd, buf, 8192);
printf("%s", buf);
close(connectfd); /*close connectfd*/
close(listenfd); /*close listenfd*/
}
谢谢!!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

GMT+8, 2024-11-14 11:17 , Processed in 0.052899 second(s), 16 queries .

© 2021 Powered by Discuz! X3.5.

快速回复 返回顶部 返回列表