Exemplo n.º 1
0
int main(){

	skaddr_in addr_ipv4;
	skaddr_in6 addr_ipv6;	
	pthread_t thread_ipv4,thread_ipv6;	

	pthread_mutex_init(&mtx, NULL);

	socket_ipv4=creatUdpSocketIpv4();
	socket_ipv6=creatUdpSocketIpv6();

	setAddrIpv4(&addr_ipv4,LCL_PORT,LCL_IPV4);
	setAddrIpv6(&addr_ipv6,LCL_PORT,LCL_IPV6);

	bindSock(socket_ipv4,(skaddr*)&addr_ipv4,sizeof(addr_ipv4));
  bindSock(socket_ipv6,(skaddr*)&addr_ipv6,sizeof(addr_ipv6));
 		
	pthread_create(&thread_ipv4,NULL, Ipv4_msgs, NULL);
	pthread_create(&thread_ipv6,NULL, Ipv6_msgs, NULL);
	
	pthread_join(thread_ipv4,NULL);
  pthread_join(thread_ipv6,NULL);
	
	pthread_mutex_destroy(&mtx);
}
Exemplo n.º 2
0
void runServer(const char *host, int port){
    socketFd = socket(AF_INET, SOCK_STREAM, 0);
    if (socketFd < 0) {
        errorlog("create socket");
        return;
    }
    
    setNonBlock(socketFd);
    
    struct sockaddr_in serverAddr;
    memset(&serverAddr, 0, sizeof(serverAddr));
    serverAddr.sin_family = AF_INET;
    serverAddr.sin_addr.s_addr = inet_addr(host);
    serverAddr.sin_port = htons(port);
    
    if(bindSock(socketFd, &serverAddr, sizeof(serverAddr)) < 0){
        errorlog("bind socket");
        return;
    }
    
    if (listen(socketFd, max_bind_num) < 0) {
        errorlog("listen socket");
        return;
    }
    
    waitAccept();
}
Exemplo n.º 3
0
int main(int argc, char *argv[])
{
	int listen, conn;

	listen = bindSock(4444);
	if (listen == -1) {
		fprintf(stderr, "bindSock error\n");
		return 1;
	}
	char* recvData = new char[1024];
	int bytes;

	while ((conn = accept(listen, NULL, NULL)) > 0) {

			bytes = recv(conn, recvData, 1023, 0);
			if (bytes == -1) {
				std::cout << "error on recv" << std::endl;
			}
			else {
				recvData[bytes] = '\0';
				std::cout << recvData << std::endl;
			}

		close(conn);
	}

	close(listen);
	return 1;
}
Exemplo n.º 4
0
static int doBind(int clsock,PCStr(clhost),int clport,int tsock,PCStr(arg)){
	IStr(respudp,128);
	IStr(local,128);
	IStr(remote,128);
	IStr(opts,128);
	IStr(host,128);
	int port;
	int fd;
	int rsock;
	int cpid = -1;

	sv1log("==SU BIND %s...\n",arg);
	strcpy(local,"*");
	strcpy(remote,"*");
	strcpy(opts,"listen=32");

	Xsscanf(arg,"%s %s %s %s",AVStr(respudp),AVStr(local),
		AVStr(remote),AVStr(opts));

	if( isWindows() || SENDFD_OVERTCP ){
		rsock = clsock;
		sscanf(respudp,"pid=%d",&cpid);
	}else{
		rsock = UDP_client_open("BIND/sudo","sendfd",respudp,1);
		sv1log("==SU rsock=%d %s\n",rsock,respudp);
		if( rsock < 0 ){
			return -1;
		}
	}

	port = 0;
	Xsscanf(local,"%[^:]:%d",AVStr(host),&port);
	fd = newSocket("BIND/sudo","");
	bindSock(fd,"BIND/SUDO",-1,AVStr(host),port,32);
	sendFd(rsock,fd,cpid);
	if( isWindows() ){
	}else{
		close(rsock);
	}

	getpairName(fd,AVStr(local),AVStr(remote));
	close(fd);

	sv1log("==SU BOUND %d %s %s\n",fd,local,remote);
	/*
	SendTo(clsock,"OK\r\n",4,clhost,clport);
	*/
	IGNRETP write(clsock,"OK\r\n",4);
	sv1log("==SU returned OK\n");
	return 0;
}