Programm:TCP-Server und Browser als Web-Client in C
//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';
}
}
Das obige Programm ist das einfache Server-Programm, das die Client-Verbindung und akzeptiert Daten übernehmen, die durch den Client gesendet wird. Ich experimentiere es mit Telnet wie unten gezeigt.
Server:
$ ./a.out
Connection accepted....
Recived Data: ...Hai...
$
Auftraggeber:
$ telnet localhost 5000
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
...Hai...
Connection closed by foreign host.
$
Wenn Telnet verwendet wird, wird es richtig funktioniert. Aber meine Anforderung ist, anstatt mit Telnet zu verbinden, muss ich mit dem Browser verbinden. Ich überprüfe mit dem Browser als meinen Client wie "127.0.0.1:5000". Und ich erwarte, dass irgendeine Verbindung hergestellt wird. Aber es gibt keine Antwort und der Serverprozess hat keine Anfrage bekommen. Was ist das Problem dahinter? Warum hat der Server keine Anfrage erhalten?
Ähnlich wie Telnet, Browser auch die IP-und Port-Nummer und macht eine TCP-Verbindung. Aber es funktioniert nicht. Kann jemand erklären, warum es wie das ist?
Wird die Meldung "Verbindung akzeptiert ..." nicht angezeigt, wenn Sie den Browser verwenden? Verwenden Sie tcpdump, um zu sehen, was passiert auf der Leitung – Prabhu