Portál AbcLinuxu, 11. května 2025 10:13
#define MAX 100
#define EXIT_FAILURE 0
#define EXIT_SUCCESS 1
#define PORT 1719
#define BACKLOG 10 //how many pending connections will stay in front
#define BUFLEN 200 //how long (max) will be recieving message
int recok, len, max, retval, mainSocket, clientSocket;
struct sockaddr_in sockName, clientName;
char message[BUFLEN], buffer[BUFLEN], end_seq[3] = "666";
/* 1 - Creating a socket */
if ((mainSocket = socket(PF_INET,SOCK_STREAM,0)) == -1) // vytvoreni soketu main - naslouchaci soket
{
printf("%s\n","Cannot create a communication socket");
exit(EXIT_FAILURE);
}
/* Naming a socket */
sockName.sin_family = AF_INET; // protokoly TCP/IP
sockName.sin_port = htons(PORT); // preklad na sitovou adresu - univerzalni format
sockName.sin_addr.s_addr = INADDR_ANY; // INADDR_ANY je IP adresa stroje
memset(&(sockName.sin_zero),'\0',8); // vyplneni 8-mi zbylych bytu nulou
retval = bind(mainSocket, (struct sockaddr *) &sockName, sizeof(sockName)); // pojmenovani soketu
/* The Big Loop */
while (1)
{
retval = listen(mainSocket,BACKLOG); // naslouchani na soketu
retval = sizeof(clientName);
clientSocket = accept(mainSocket, (struct sockaddr *) &clientName, &retval); //vytvoreni komunikacniho soketu
if ((len = recv(clientSocket, buffer, BUFLEN - 1, 0)) > 0) //prijem zpravy ze soketu (cislo), len je delka zpravy v bajtech
{
buffer[len] = '\0';
printf("%s %s\n","Recieved number:",buffer);
strcpy(message,"Number was recieved successfully\0");
}
else
{
printf("%s\n","Nothing was send");
strcpy(message,"Number was not recieved\0");
}
send(clientSocket,message,sizeof(message),0);
printf("%s %s%s\n","Message\"",message,"\"was sent to Apache");
close(clientSocket); //uzavreni soketu
if ((strcmp(buffer, end_seq)) == 0)
{
close(mainSocket);
exit(EXIT_FAILURE);
}
}
$number = $_REQUEST["number"];
$socket = FSockOpen("127.0.0.1",1719);
$writeok = FPuts($socket,$number);
$message = FGetS($socket,200);
$close_sock = FClose($socket);
Vsechno vypada v poradku, obe strany zaviraji po komunikaci soket. Kdyz ale vypisu sokety pomoci socklist, vzdycky tam najdu ten chteny naslouchaci soket ale taky soket co nechci:
tcp 1719 36764 2001 11500 4 konfd
tcp 1719 0 0 0 0
Local Address Foreign Address State User Inode
localhost:1719 localhost:2140 TIME_WAIT root 0
Local Address Foreign Address State User Inode
*:1719 *:* LISTEN frankie 75147
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.