int sendRTPPacket(rtp_out_handle* p, uint8_t *p_nalu, int i_size, int first, int last, int nalu_typ) { char buffer[MAX_RTP_PACKET_SIZE]; BYTE marker = 0; int ret = 0; if(last) marker = 1; BYTE payloadTyp = 96; memset(buffer, 0, MAX_RTP_PACKET_SIZE); getHead(buffer, marker, payloadTyp, p->sequenznummer++, p->timestamp, p->ssrc); if( first & last ) { // a FU_A is not allowed here by RFC 3984 buffer[12] = nalu_typ; memcpy( buffer+13, p_nalu, i_size ); i_size += 13; } else { // send FU-A (fragmentation unit type A) // F|NRI| Type buffer[12] = 28 | (nalu_typ & 0x60); // FU indicator. NRI taken from original NAL unit // S|E|R| Type buffer[13] = (first ? 0x80 : 0) | (last ? 0x40 : 0) | (0x1F & nalu_typ); // FU header: S:1 E:1 R:1 Typ:5 memcpy( buffer+14, p_nalu, i_size ); i_size += 14; } // printf("timestamp %10d: sending %4d bytes\n", p->timestamp, i_size ); ret = send(p->socket, buffer, i_size, 0); if(ret < 0) { #ifdef _WIN32 int err = WSAGetLastError(); fprintf(stderr, "Fehler bei send: %s\n\n", getErrnoText()); if(err == WSAEINVAL) return 0; #else fprintf(stderr, "Fehler bei send: %d, %s\n\n", errno, getErrnoText()); if(errno == 111) return 0; #endif return -1; } return ret; }
void CMainFrame::onFileMruFile(int index) { TextView *view = getActiveTextView(); if(view == NULL) return; try { const String fname = theApp.getRecentFile(index); if(ACCESS(fname, 4) < 0) { const int errorCode = errno; showWarning(getErrnoText()); if(errorCode == ENOENT) { theApp.removeFromRecentFiles(index); } return; } CWinDiffDoc *doc = view->getDocument(); doc->setDoc(view->getId(),DIFFDOC_FILE, fname); Invalidate(FALSE); //view->refreshBoth(); } catch(Exception e) { showException(e); } }
int openSocket(const char* address, const char* port) { printf("openSocket\n"); int s = 0, status; #ifdef _WIN32 WSADATA wsaData; //WSAData wsaData; //falls das andere nicht geht // MAKEWORD(1,1) for Winsock 1.1, MAKEWORD(2,0) for Winsock 2.0: if(!WSAInit) { if(WSAStartup(MAKEWORD(2,2), &wsaData) != 0) { fprintf(stderr, "WSAStartup failed.\n"); return -1; } WSAInit = 1; } #endif struct addrinfo hints, *servinfo = NULL, *p = NULL, *pSocket = NULL; memset(&hints, 0, sizeof(struct addrinfo)); //prepare hints.ai_family = AF_INET; hints.ai_socktype = SOCK_DGRAM; hints.ai_protocol = IPPROTO_UDP; // */ // do the lookup // [pretend we already filled out the "hints" struct] status = getaddrinfo(address, port, &hints, &servinfo); if(status != 0) { printf("status != 0\n"); fprintf(stderr, "addresse: %s, port: %s, getaddrinfo error: %s\n", address, port, gai_strerror(status)); return -1; } //printf("getaddrinfo fertig\n"); // Retrieve each address and print out the hex bytes for(p=servinfo; p != NULL ;p=p->ai_next) { #ifdef __DEBUG printInfos(p); #endif //Socket erstellen if ((s = socket(p->ai_family, p->ai_socktype, p->ai_protocol)) == -1) { fprintf(stderr, "socket erstellung fehlgeschlagen, weiter naechster Versuch!\n"); continue; } else { pSocket= p; fprintf(stderr, "socket wurde erstellt!\n"); break; } } #ifdef __DEBUG printf("socket %d\n", s); #endif if(s != -1) { //printf("s: %d, ai_addr: %d" );//, ai_addr: %d, ai_addrlen: %d", s, p->ai_addr, p->ai_addrlen); // socket connecten, damit der send aufruf leichter ist if(connect(s, pSocket->ai_addr, pSocket->ai_addrlen) != 0) { #ifdef _WIN32 //int err = WSAGetLastError(); fprintf(stderr, "errorcode: %s ", getErrnoText()); #endif fprintf(stderr, "Fehler beim connecten: %d, %s\n", errno, getErrnoText()); } else { printf("connection wurde erstellet\n"); } } freeaddrinfo(servinfo); return s; }