- 論壇徽章:
- 0
|
本帖最后由 suhuadong110 于 2011-10-23 22:33 編輯
我用的是ubuntu,通過c語言,發(fā)送request,獲得了response,我直接用printf打印,發(fā)現(xiàn)中文解析不了,我該如何解決呢?
代碼:
int main(int argc, char* argv)
{
int sockfd;
struct sockaddr_in server_addr;
uint16_t port = 80;
char sndBuf[1024] = {0};
char buffer[5000];
sockfd = socket(AF_INET, SOCK_STREAM, 0);
if(sockfd < 0)
{
printf("socket fail\n");
exit(1);
}
else
{
printf("socket ok\n");
}
bzero(&server_addr, sizeof(server_addr));
server_addr.sin_family = AF_INET;
server_addr.sin_port = htons(port);
server_addr.sin_addr.s_addr = inet_addr("180.149.131.31");
//請求報頭
sprintf(sndBuf, "GET /index.html HTTP/1.1\r\n");
int len = strlen(sndBuf);
sprintf(sndBuf + len, "Accept: text/html\r\n");
len = strlen(sndBuf);
sprintf(sndBuf + len, "Accept-Language: zh-cn\r\n");
len = strlen(sndBuf);
sprintf(sndBuf + len, "Accept-Charset: UTF-8,*\r\n");
len = strlen(sndBuf);
sprintf(sndBuf + len, "Host: www.hao123.com\r\n\r\n");
//鏈接服務(wù)器,讀response到buff,之后打印buffer的內(nèi)容
int con_res = connect(sockfd, (struct sockaddr*)&server_addr, sizeof(struct sockaddr));
if(con_res == 0)
{
printf("鏈接成功\n");
int w_res = write(sockfd, sndBuf, sizeof(sndBuf));
if(w_res == -1)
{
printf("write fail\n");
}
else
{
printf("write ok\n");
}
int size = read(sockfd, buffer, 5000);
if(size == -1)
{
printf("read fail\n");
}
else
{
printf("read ok\n");
}
printf("read form server data length = %d\n", size);
printf("%s\n", buffer);
}
else
{
printf("connect faile\n");
}
return 0;
}
運行結(jié)果:
HTTP/1.1 200 OK
.........
<meta name="ROBOTS" content="NOODP">
<meta name="description" content="hao123
之后有中文亂碼 |
|