int make_udpsocket(uint16_t port) { int sock; int ret; struct sockaddr_in name; sock = socket(AF_INET, SOCK_DGRAM, 0); if(sock < 0) { return -1; } name.sin_family = AF_INET; name.sin_port = htons(port); name.sin_addr.s_addr = htonl(INADDR_ANY); dest.sin_family = AF_INET; dest.sin_port = htons(port); dest.sin_addr.s_addr = sceNetInetInetAddr(DRONE_IP); ret = bind(sock, (struct sockaddr *) &name, sizeof(name)); if(ret < 0) { return -1; } return sock; }
int my_loadpicks_fromfile(PICKER* pickerP, const char* szFile, bool bParseIP) // returns number of entries read { FILE* pf = fopen(szFile, "rt"); if (pf == 0) return 0; char szLine[128]; int nAdded = 0; while (fgets(szLine, sizeof(szLine), pf) != NULL) { // CR-LF will cause blank lines if (szLine[0] == '\0' || szLine[0] == ';') continue; // skip // format is "BIG_STRING;FinePrint" char* szFinePrint = strchr(szLine, ';'); if (szFinePrint != NULL) *szFinePrint++ = '\0'; u32 userData = 0; if (bParseIP) { // parse szLine for ?.?.?.? IP address userData = sceNetInetInetAddr(szLine); if (userData == 0) continue; // bad, skip it } // only first 5 will fit if (my_addpick(pickerP, szLine, szFinePrint, userData)) nAdded++; } fclose(pf); return nAdded; }
int connectSocket( const char * ip_addr, unsigned short port ) { struct sockaddr_in addr; int opt = 1; addr.sin_family = AF_INET; addr.sin_port = htons( port ); addr.sin_addr.s_addr = sceNetInetInetAddr( ip_addr ); int i = 0; for( i = 0; i < 4; i ++ ) { ctrl_opts.sock[i].server = sceNetInetSocket( PF_INET, SOCK_STREAM, 0 ); if ( ctrl_opts.sock[i].server < 0 ) { log( "Error create sock connection\n" ); return -1; } int ret = sceNetInetSetsockopt( ctrl_opts.sock[i].server, SOL_TCP, TCP_NODELAY, &opt, sizeof( opt ) ); if ( ret != 0 ) { log( "Error setting sock option\n" ); return -1; } ret = sceNetInetConnect( ctrl_opts.sock[i].server, ( struct sockaddr * )&addr, sizeof( addr ) ); if ( ret < 0 ) { log( "Error connect to sock %08x\n", ctrl_opts.sock[i].server ); return -1; } ctrl_opts.sock[i].thid = sceKernelCreateThread( "sock_thread", sock_thread, 0x20, 0x2000, PSP_THREAD_ATTR_USBWLAN, NULL ); if ( ctrl_opts.sock[i].thid < 0 ) { log( "Error creating thread\n" ); return -1; } unsigned int addr = ( unsigned int )&ctrl_opts.sock[i]; sceKernelStartThread( ctrl_opts.sock[i].thid, 4, &addr ); } return 0; }