Ich schreibe einen einfachen Server-Code. Nach dem Ausführen des Codes, versuche ich den Server mit "Telnet Localhost 8000" verbinden und ich bekomme den nächsten Fehler: "Verbindung von fremden Host geschlossen" und der Server schließt. dies ist der Code, den ich schrieb:Erstellen eines neuen TCP-Sockets - Serverseite
void main(int argv,void * argc)
{
//int socket(int af, int type, int protocol);
int listen_sckt;
int new_socket;
int addrlen;
struct sockaddr_in addr;
/*
#include <netinet/in.h>
struct sockaddr_in {
short sin_family; // e.g. AF_INET
unsigned short sin_port; // e.g. htons(3490)
struct in_addr sin_addr; // see struct in_addr, below
char sin_zero[8]; // zero this if you want to
};
struct in_addr {
unsigned long s_addr; // load with inet_aton()
};
*/
listen_sckt = socket(AF_INET,SOCK_STREAM,0);
if(listen_sckt == -1){
perror("SOCKET ERR\n");
return;
}
printf("Socket succesfulyl opened\n");
{
/*
binding a docket
syntax:
int bind(int s, struct sockaddr *addr, int addrlen);
connect the socket to a logic port.
so the other side will know where to "find" the other side
*/
}
addr.sin_family = AF_INET;x`
addr.sin_addr.s_addr = INADDR_ANY;
addr.sin_port = htons(8000);
//binding command
if(-1 == bind(listen_sckt,(struct sockaddr*)&addr,sizeof(addr))){
perror("BINDING ERR\n");
}
printf("Binding succesfully done\n");
/* Listen()
Before any connections can be accepted, the socket must be told to listen
for connections and also the maximum number of pending connections using listen()
Includes:
#include <sys/socket.h>
Syntax:
int listen(int socket, int backlog);
socket - the socket file descriptor
backlog - the max number of pedding the socket will hold
C source:
*/
listen(listen_sckt,2);
/*
To actually tell the server to accept a connection, you have to use the function accept()
Includes:
#include <sys/socket.h>
Syntax:
int accept(int s, struct sockaddr *addr, int *addrlen);
*/
addrlen = sizeof(struct sockaddr_in);
new_socket = accept(listen_sckt,(struct sockaddr*)&addr,&addrlen);
if(new_socket<0){
perror("Accept ERR\n");
}
printf("Acept success\n");
}
Dank.
Dies liegt daran, dass Ihr Server nach dem Akzeptieren einer Verbindung und dem Drucken einer Nachricht nichts unternimmt. Fahren Sie mit der Implementierung Ihres Servers fort. Außerdem sollte der Typ des Rückgabewerts "int" sein, was im Standard definiert ist. – MikeCAT