//Server
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<arpa/inet.h>
#include<netdb.h>
void main()
{
int fd=socket(AF_INET,SOCK_STREAM,0);
struct sockaddr_in sa,clientaddr;
struct in_addr ip;
if(inet_pton(AF_INET,"127.0.0.1",&ip)!=1){
perror("inet_pton");
exit(1);
}
sa.sin_family=AF_INET;
sa.sin_port=htons(5000);
sa.sin_addr=ip;
if(bind(fd,(struct sockaddr*)&sa,sizeof(sa))!=0){
printf("Unable to Bind\n");
perror("");
exit(1);
}
if(listen(fd,1024)!=0){
printf("Unable to Listen \n");
exit(1);
}
int len=sizeof(struct sockaddr);
int des;
if((des=accept(fd,(struct sockaddr*)&clientaddr,&len))<0){
printf("Unable to accept\n");
}
else{
printf("Connection accepted....\n");
char buf[1024];
int r=recv(des,buf,1024,0);
printf("Recived Data: ");
fflush(stdout);
write(1,buf,r);
printf("\n");
buf[0]='\0';
}
}
上述程序是简单的服务器程序,它接受客户连接,并接受其由客户端发送的数据。我用telnet对它进行了实验 ,如下所示。
服务器:
$ ./a.out
Connection accepted....
Recived Data: ...Hai...
$
客户:
$ telnet localhost 5000
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
...Hai...
Connection closed by foreign host.
$
使用telnet时,它工作正常。但我的要求是,而不是连接到telnet,我必须连接到浏览器。我使用浏览器检查 ,如“127.0.0.1:5000”。我希望建立任何连接。但没有响应,服务器进程 没有得到任何请求。这背后有什么问题。为什么服务器没有得到请求?
与telnet类似,浏览器也获取ip和端口号并建立TCP连接。但它不起作用。任何人都可以解释为什么它是这样的 ?
当您使用浏览器时,您没有看到“Connection accepted ....”消息吗?请使用tcpdump来查看线路上发生了什么 – Prabhu