コード例 #1
0
int build_socket(char *http_port, char *dns_port, int *hd, int *dd){
	if((*hd = passivesock(http_port, IPPROTO_TCP, 10)) < 0){
		csprintf("Fail to socket for httpd port: %s.\n", http_port);
		return -1;
	}
	
	if((*dd = passivesock(dns_port, IPPROTO_UDP, 10)) < 0){
		csprintf("Fail to socket for DNS port: %s.\n", dns_port);
		return -1;
	}
	
	return 0;
}
コード例 #2
0
ファイル: common.c プロジェクト: boskoop/bfh-network
/*------------------------------------------------------------------------
 * passiveUDP - create a passive socket for use in a UDP server
 *------------------------------------------------------------------------
 */
SOCKET passiveUDP(const char *service) {
	/*
	 * Arguments:
	 *      service - service associated with the desired port
	 */
	return passivesock(service, "udp", 0);
}
コード例 #3
0
ファイル: common.c プロジェクト: boskoop/bfh-network
SOCKET passiveTCP(const char *service, int qlen) {
	/*
	 * Arguments:
	 *      service - service associated with the desired port
	 *      qlen    - maximum server request queue length
	 */
	return passivesock(service, "tcp", qlen);
}
コード例 #4
0
ファイル: atserv2.c プロジェクト: bonzehan/Auto-GSM-GPS
/*---------------------------------------------------------------------------
 * Процедура passiveTCP - создает пассивный сокет для использования
 * в сервере TCP
 *---------------------------------------------------------------------------
 */
int passiveTCP(const char *service, int qlen)
/*
 * Параметры:
 * service - служба, связанная с требуемым портом
 * qlen - максимальная длина очереди запросов сервера
 */
{
return passivesock(service, "tcp", qlen);
}
コード例 #5
0
/*------------------------------------------------------------------------
 * main - Concurrent TCP server for ECHO service
 *------------------------------------------------------------------------
 */
int
main(int argc, char *argv[])
{
	char	*portnum = "5004";	/* Standard server port number	*/
	struct sockaddr_in fsin;	/* the from address of a client	*/
	int	msock;			/* master server socket		*/
	fd_set	rfds;			/* read file descriptor set	*/
	fd_set	afds;			/* active file descriptor set	*/
	unsigned int	alen;		/* from-address length		*/
	int	fd, nfds;
	
	switch (argc) {
	case	1:
		break;
	case	2:
		portnum = argv[1];
		break;
	default:
		errexit("usage: %s [port]\n",argv[0]);
	}

	msock = passivesock(portnum, QLEN);

	nfds = getdtablesize();
	FD_ZERO(&afds);
	FD_SET(msock, &afds);

	while (1) {
		memcpy(&rfds, &afds, sizeof(rfds));

		if (select(nfds, &rfds, (fd_set *)0, (fd_set *)0,
				(struct timeval *)0) < 0)
			errexit("select: %s\n", strerror(errno));
		if (FD_ISSET(msock, &rfds)) {
			int	ssock;

			alen = sizeof(fsin);
			ssock = accept(msock, (struct sockaddr *)&fsin,
				&alen);
			if (ssock < 0)
				errexit("accept: %s\n",
					strerror(errno));
			FD_SET(ssock, &afds);
		}
		for (fd=0; fd<nfds; ++fd)
			if (fd != msock && FD_ISSET(fd, &rfds))
				if (echo(fd) == 0) {
					(void) close(fd);
					FD_CLR(fd, &afds);
				}
	}
}
コード例 #6
0
ファイル: main.c プロジェクト: TakeshiTseng/NP-Project2-fork
int main(int argc, const char * argv[])
{

    // handling zombie processes
    signal(SIGCHLD, handleSIGCHLD);

    srand(time(0));

    init_client_list();
    init_global_pipe_list();
    init_message_boxes();


    struct sockaddr_in my_addr;
    struct sockaddr_in client_addr;
    int port = 2000 + rand() % 100;
    printf("Port : %d\n", port);
    char port_str[5];
    sprintf(port_str, "%d", port);
    int sc_fd = passivesock(port_str, "tcp", 5);

    printf("accepting.....\n");

    int addrlen = sizeof(client_addr);

    while(1) {
        int new_client_sock = accept(sc_fd, (struct sockaddr *)&client_addr, (socklen_t*)&addrlen);
        int pid = fork();

        if(pid == 0) {
            // child
            client_node_t* client = create_client_node(new_client_sock, "CGILAB"/*inet_ntoa(client_addr.sin_addr)*/, 511/*ntohs(client_addr.sin_port)*/);
            close(sc_fd);

            if(insert_to_client_list(client) != -1) {
                serve(client);
                close(new_client_sock);
                return 0;
            }
        } else {
            close(new_client_sock);
        }
    }
    return 0;
}
コード例 #7
0
ファイル: IP6SupportServer.c プロジェクト: srushti1990/myCode
int main(int argc, char *argv[])
{
	struct sockaddr_in6 fsin, clientadr; /* the from address of a client */
	int cliadrlen = sizeof(cliadrlen);
	memset(&fsin, 0, sizeof(fsin));
	char str[INET6_ADDRSTRLEN];
	bzero((char *) &fsin, sizeof(fsin));
	int msock, ssock; /* master & slave sockets */
	socklen_t alen = sizeof(fsin); /* from-address length */
	msock = passivesock(QLEN);
	while (1) {
		ssock = accept(msock, (struct sockaddr *)&fsin, &alen);
		getpeername(ssock, (struct sockaddr *)&clientadr, &cliadrlen);
		if(inet_ntop(AF_INET6, &clientadr.sin6_addr, str, sizeof(str))) {
			printf("Client address is %s\n", str);
			printf("Client port is: %d\n", ntohs(clientadr.sin6_port));
		}
		if (ssock < 0)
		errexit("accept failed: %s\n", strerror(errno));
		(void) TCPdaytimed(ssock);
		(void) close(ssock);
	}
}
コード例 #8
0
// Main function
int main(int argc,char* argv[])
{
    // Main socket and servant socket
    int listenfd, connectfd;          
    pthread_t thread;
    ARG *arg;
    // Service-end socket addr
    struct sockaddr_in server;        
    // Client-end socket addr
    struct sockaddr_in client;        
    socklen_t ssize = sizeof(struct sockaddr_in);

    echo("[SERVICE] creating passive socket..\n");
    listenfd = passivesock(&server);
    echo("[SERVICE] passive socket %d created.\n", listenfd);

    while(1)
    {
        // connect to first client, create temporary socket 
        echo("[SERVICE] waiting for client..\n");
        if ((connectfd = accept(listenfd, (struct sockaddr*)&client, &ssize)) < 0)
            errexit("accept failed: %s\n", strerror(errno));
        echo("[SERVICE] servant socket %d created.\n", connectfd);
        // Initial client information struct
        arg = malloc(sizeof(ARG));    
        arg->connectfd = connectfd;
        //NOTE: threads sharing the memory, client variable cannot reuse
        // deep copy
        memcpy(&arg->client, &client, sizeof(client));  

        if (pthread_create(&thread, NULL, startRoutine, (void*)arg))
            errexit("create thread failed: %s\n", strerror(errno));
    }
    close(listenfd);
    return 0;
}
コード例 #9
0
int passiveUDP(const char *service) {
	return passivesock(service, "udp", 0);
}
コード例 #10
0
int passiveTCP(const char *service, int qlen) {
	return passivesock(service, "tcp", qlen);
}
コード例 #11
0
int passiveTCP(int port, int qlen)
{
	return passivesock(port, "tcp", qlen);
}