int main(int argc, char *argv[]) { WinsockInit(); QApplication a(argc, argv); MainWindow w; w.show(); return a.exec(); }
void init() { char plugin_path[1024]; int i; config_read(); hInstance_for_id3editor = mod.hDllInstance; buffer = (unsigned char*)LocalAlloc(LPTR, 768*2); lastfn = (char*)LocalAlloc(LPTR, 1024*sizeof(char)); /* Initialize winsock, necessary for streaming */ WinsockInit(); }
/* * UDP 本地 */ UdpCom::UdpCom(unsigned short port) { socketFd = -1; #if (defined _WIN32) || (defined _WIN64) if(!WinsockInit(2, 2)) { socketFd = -2; //记录日志 } #endif if(socketFd == -1) { memset(&socketAddr, 0, sizeof(struct sockaddr_in)); //清空socketAddr结构体 socketAddr.sin_family = AF_INET; //地址类型为AF_INET(地址簇) socketAddr.sin_addr.s_addr = htonl(INADDR_ANY); //任意本地地址 socketAddr.sin_port = htons(port); //服务器端口号 socketFd = socket(AF_INET, SOCK_DGRAM, 0); //初始化一个IPv4族的数据报套接字 //int flag = fcntl(socketFd, F_GETFL, 0); //获取建立的socketFd的当前状态 //fcntl(socketFd, F_SETFL, flag | O_NONBLOCK); //将当前socketFd设置为非阻塞 if(bind(socketFd, (struct sockaddr *)(&socketAddr), sizeof(struct sockaddr)) != 0) //绑定端口号 cout << "Bind Port Error" << endl; } }
// // Attempt to load winsock DLL and obtain entry points to required API. // // HX_RESULT HXWinSockLib::Load() { HXScopeLock lock((IHXMutex*)m_pLoadMutex); HXLOGL3(HXLOG_NETW, "HXWinSockLib::Load(): usage count going to %lu", m_userCount + 1); if(m_hLib) { ++m_userCount; return HXR_OK; } #if defined(WIN32_PLATFORM_PSPC) const TCHAR* const pszLibName = "winsock.dll"; const TCHAR* const pszAltLibName = 0; #elif defined(_WIN32) const TCHAR* const pszLibName = "ws2_32.dll"; // 2.X const TCHAR* const pszAltLibName = "winsock32.dll"; // 1.1 #else # error fix this #endif HX_RESULT hr = HXR_FAIL; HXLOGL3(HXLOG_NETW, "HXWinSockLib::Load(): loading lib"); m_hLib = LoadLibrary(pszLibName); if(!m_hLib && pszAltLibName) { m_hLib = LoadLibrary(pszAltLibName); } if (m_hLib) { ++m_userCount; hr = HXR_OK; // // load required set of function pointers from library // LOAD_PROC(accept); LOAD_PROC(bind); LOAD_PROC(closesocket); LOAD_PROC(WSAStartup); LOAD_PROC(WSACleanup); LOAD_PROC(connect); LOAD_PROC(ioctlsocket); LOAD_PROC(getpeername); LOAD_PROC(getsockname); LOAD_PROC(getsockopt); LOAD_PROC(htonl); LOAD_PROC(htons); LOAD_PROC(inet_addr); LOAD_PROC(inet_ntoa); LOAD_PROC(listen); LOAD_PROC(ntohl); LOAD_PROC(ntohs); LOAD_PROC(recv); LOAD_PROC(recvfrom); LOAD_PROC(select); LOAD_PROC(send); LOAD_PROC(sendto); LOAD_PROC(setsockopt); LOAD_PROC(shutdown); LOAD_PROC(socket); LOAD_PROC(gethostbyaddr); LOAD_PROC(gethostbyname); LOAD_PROC(gethostname); LOAD_PROC(__WSAFDIsSet); #if defined(_WINCE) LOAD_PROC(SetLastError); LOAD_PROC(GetLastError); #endif #if !defined(_WINCE) LOAD_PROC(getservbyport); LOAD_PROC(getservbyname); LOAD_PROC(getprotobynumber); LOAD_PROC(getprotobyname); LOAD_PROC(WSASetLastError); LOAD_PROC(WSAGetLastError); //LOAD_PROC(WSAIsBlocking); //LOAD_PROC(WSAUnhookBlockingHook); //LOAD_PROC(WSASetBlockingHook); //LOAD_PROC(WSACancelBlockingCall); LOAD_PROC(WSAAsyncGetServByName); LOAD_PROC(WSAAsyncGetServByPort); LOAD_PROC(WSAAsyncGetProtoByName); LOAD_PROC(WSAAsyncGetProtoByNumber); LOAD_PROC(WSAAsyncGetHostByName); LOAD_PROC(WSAAsyncGetHostByAddr); LOAD_PROC(WSACancelAsyncRequest); LOAD_PROC(WSAAsyncSelect); LOAD_PROC(WSASend); LOAD_PROC(WSASendTo); LOAD_PROC(WSARecv); LOAD_PROC(WSARecvFrom); LOAD_PROC(WSAIoctl); #endif // everything prior to this should be succeed even with ipv4-only WinSock support HX_ASSERT(HXR_OK == hr); if( HXR_OK == hr ) { // optional IPv6 api LOAD_PROC(getaddrinfo); LOAD_PROC(getnameinfo); LOAD_PROC(freeaddrinfo); hr = WinsockInit(); } if(FAILED(hr)) { UnLoad(); } } return hr; }