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); }
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(); }
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; }
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; }