⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 talker_utils.c,v

📁 这是P2P流媒体方案-NICE的实现源码
💻 C,V
字号:
head	1.2;access;symbols;locks; strict;comment	@ * @;1.2date	2002.07.26.19.42.03;	author rbraud;	state Exp;branches;next	1.1;1.1date	2002.07.25.20.41.45;	author rbraud;	state Exp;branches;next	;desc@@1.2log@New function to disconnect from the talker@text@#include <sys/socket.h>#include <arpa/inet.h>#include <netdb.h>#include <stdio.h>#include <unistd.h>#include <string.h>#include "talker_utils.h"static int sock = -1;static struct sockaddr_in talker_addr;double estimate_rtt_wrapper(struct sockaddr_in their_addr) {  char ping_info[6];  double ping_time = 40000;  if(sock <= 0) {    printf("Talker-utils: WARNING: estimate_rtt_wrapper() called but talker location not defined\n");    return 40000;  }  memcpy(ping_info, &their_addr.sin_addr.s_addr, sizeof(their_addr.sin_addr.s_addr));  memcpy(&ping_info[4], &their_addr.sin_port, sizeof(their_addr.sin_port));  if(send(sock, ping_info, 6, 0) < 0) {    printf("Talker-utils: Send failed\n");    return 40000;  }  if(recv(sock, ping_info, 6, 0) < 0) {    printf("Talker-utils: Error receiving ping response\n");    return 40000;  }  ping_time = (float)ntohl(*((long*)ping_info));  return ping_time;}int setup_talker(char* hostname, short port) {  struct hostent* h;  if((sock = socket(PF_INET, SOCK_STREAM, IPPROTO_TCP)) < 0) {    printf("Talker-utils: Could not create socket for talker\n");    return -1;  }  h = gethostbyname(hostname);  if(h == 0x0) {    printf("Talker-utils: Could not resolve talker hostname\n");    return -1;  }  memset(&talker_addr, 0, sizeof(talker_addr));  talker_addr.sin_family = AF_INET;  talker_addr.sin_addr = *((in_addr*)h->h_addr_list[0]);  talker_addr.sin_port = htons(port);  if(connect(sock, (struct sockaddr*)&talker_addr, sizeof(talker_addr)) < 0) {    printf("Talker-utils: Could not connect to talker\n");    return -1;  }  return 0;}int disconnect_talker() {  char bye[] = "bye";  if(sock < 0) {    printf("Talker-utils: WARNING: disconnect_talker() called on an unconnected socket\n");    return 0;  }  if(send(sock, bye, strlen(bye), 0) < 0) {    printf("Talker-utils: Error disconnecting from talker\n");  }  return close(sock);}@1.1log@Initial revision@text@d5 1a35 1  printf("currently the socket is %d\n", sock);d54 13@

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -