Portál AbcLinuxu, 4. listopadu 2025 06:23
#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.