php - 浏览器作为客户端访问 socket服务器程序失败 ?

 无内功不5功 发布于 2022-11-28 00:19

写一个socket客户端程序访问正常.用telent访问也正常,但是浏览器作为客户端访问直接报错,压根不会进入while循环中,这是为啥?

浏览器访问127.0.0.1:8899
服务端程序直接退出,报了一行错误:Segmentationfault(核心已转储)

服务端代码大概长下面这样

intmain(intargc,char*argv[]){if(argc!=2){err_msg("Usage:./studyHttpd\n");}structsockaddr_inserver_sock,client_sock;intsockfd,client_fd;intsin_size;pthread_tntid;if(-1==(sockfd=socket(AF_INET,SOCK_STREAM,0)))err_exit("socket");printf("Socketid=%d\n",sockfd);server_sock.sin_family=AF_INET;server_sock.sin_port=htons(PORT);server_sock.sin_addr.s_addr=INADDR_ANY;bzero(&(server_sock.sin_zero),8);inti=1;setsockopt(sockfd,SOL_SOCKET,SO_REUSEADDR,&i,sizeof(i));if(-1==bind(sockfd,(structsockaddr*)&server_sock,sizeof(structsockaddr)))err_exit("bind");printf("Bindsuccess\n");if(-1==listen(sockfd,MAX_QUE_CONN_NM))err_exit("listen");printf("Listeningport=%d\n",PORT);sin_size=sizeof(client_sock);/*在浏览器根本不会执行到这一步,其他做客户端正常*/while(1){if(-1==(client_fd=accept(sockfd,(structsockaddr*)&client_sock,&sin_size)))err_exit("accept");if(pthread_create(&ntid,NULL,(void*)handle,&client_fd)!=0)err_exit("pthread_create");}close(sockfd);return0;}
1 个回答
  • 浏览器走的是http协议socket一般走的是tcp/ip协议

    http协议有特殊的报文头,没有的话当然访问不了

    2022-11-28 01:32 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有