Ciao raga... mi stavo esercitando con le soclets... ho realizzato un programmino server-side, però non lo ho ancora testato anche perchè devo sviluppare il client... uso il protocollo TCP con IPv4
la compilazione è ok, e va senza errori...codice:/*************************************************************************************/ /********* PaTeR - New Scripting Generation *********/ /********* Socket Script Example - Function: Server *********/ /*************************************************************************************/ // Including required headers #include <sys/types.h> #include <sys/socket.h> #include <netinet/in.h> #include <arpa/inet.h> #include <netdb.h> #include <stdio.h> #include <unistd.h> // Constants #define MAX_MSG 1024 #define PORT 1991 #define PROTOCOL PF_INET #define TYPE SOCK_STREAM #define FAMILY AF_INET // Functions: int main(); // Starting Script main() { // Initializing Socket structures struct sockaddr_in cliAddr, servAddr; // Init buffer for line to display char line[MAX_MSG]; // Opening a socket stream: int socket(int domain, int type, int protocol) int sockfd = socket(PROTOCOL, TYPE, 0); // Control for incoming socket if(sockfd <= 0) perror("Cannot create socket"); // Adjusting bind configuration, modifying struct variables servAddr.sin_family = FAMILY; servAddr.sin_addr.s_addr = htonl(INADDR_ANY); servAddr.sin_port = htons(PORT); // Assign a local address to a socket: int bind(int sockfd, const struct sockaddr *serv_addr, socklen_t addrlen) int bindc = bind(sockfd, (struct sockaddr *) &servAddr, sizeof(servAddr)); // Control for bind if(bindc < 0) perror("Cannot bind socket"); // Start 'passive socket': int listen(int sockfd, int backlog) int listenc = listen(sockfd, 5); // Control for incoming socket if(listenc < 0) perror("Cannot start 'passive socket'"); // Start an infinite loop while(1) { // Defining cliAddr size in cliLen int cliLen = sizeof(cliAddr); // Accept connection int ccept = accept(sockfd, (struct sockaddr *) &cliAddr, &cliLen); // If cannot accept connection //if(ccept < 0) perror("Cannot accept connection "); // Receive data int result = recv(ccept, line, MAX_MSG, 0); // Control for received data and print something if(result == 0) { // Client closed connection perror("Connection closed by Client"); } else { if(result < 0) { // Cannot receive data // perror("Cannot receive Data"); } else { // Data received: Showing it printf("Data received: %s", line); } } } }
dite che va bene??
Ho cercato di usare IPv6 solo che mi dava alcuni errori mentre cerfavo di definire sin6_addr.in6_addr, con htonl(INADDR_ANY) mi diceva che i tipi erano incompatibili... dopo proverò con in6addr_any. intanto che mi dite? è un buon inizio per un dilettante come me? un esempio di client è facile da realizzare? grazie

 
			
			 
			 
					
					
					
						 Rispondi quotando
  Rispondi quotando